Заставьте mod_alias работать с mod_rewrite - PullRequest
0 голосов
/ 08 сентября 2011

Правило 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 Ответ

0 голосов
/ 09 сентября 2011

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]
...