Заставьте mod_alias работать с mod_rewrite

Правило mod_alias:

/water    /local/path1/water

Целевые URL:

http://www.mysite.com/water/css/style.css
http://www.mysite.com/water/js/java.js

Фактические URL:

http://www.mysite.com/water/css.php?src=style.css
http://www.mysite.com/water/js.php?src=java.js

Мод переписать правило:

RewriteEngine on

RewriteCond /local/path1/water%{REQUEST_URI} !-d
RewriteCond /local/path1/water%{REQUEST_URI} !-f
RewriteRule ^/water/css/([^/]+)$ /local/path1/water/css.php?src=$1 [PT] 
RewriteRule ^/water/js/([^/]+)$ /local/path1/water/js.php?src=$1 [PT]

Проблема: это не работает, и я получаю 404 ошибки, и ошибка говорит этот скрипт /www/mysite.com/htdocs/css.php не найден или не может начать

1 ответ

1. У меня нет большого опыта работы с mod_alias .. но я думаю, что вы делаете неправильно, переписав /local/path1/water/ - mod_rewrite выполняет перезапись URL, поэтому здесь также должен быть URL.

2. Я предполагаю, что /local/path1/water%{REQUEST_URI} является правильной конструкцией и ссылается на правильный файл. Но... вы применяете их (эти 2 условия) только к первому правилу перезаписи...

3. Как я понимаю, эти правила находятся в контексте конфигурации сервера / VirtualHost, а не в.htaccess.

Взяв все это вместе, вы должны попробовать это вместо:

RewriteEngine on

RewriteCond /local/path1/water%{REQUEST_URI} !-d
RewriteCond /local/path1/water%{REQUEST_URI} !-f
RewriteRule ^/water/css/([^/]+\.css)$ /water/css.php?src=$1 [L,PT]

RewriteCond /local/path1/water%{REQUEST_URI} !-d
RewriteCond /local/path1/water%{REQUEST_URI} !-f
RewriteRule ^/water/js/([^/]+\.js)$ /water/js.php?src=$1 [L,PT]
Другие вопросы по тегам