我需要找出request_uri是否使用RewriteBase指向特定目录中的文件。
即。网址是
http://localhost/~username/projectname/images/logo.gif
文件位于目录
中/home/username/public_html/projectname/www/images/logo.gif
.htacces应该是这样的:
RewriteEngine ON
RewriteBase /~username/projectname/
RewriteCondition /home/username/public_html/projectname/www%{REQUEST_URI} !-f
RewriteRule (.*) app/file-not-found.php?url=$0 [QSA,L]
不幸的是,RewriteCondition被解释为
/home/username/public_html/projectname/www/~username/projectname/images/logo.gif
而不是
/home/username/public_html/projectname/www/images/logo.gif
因此条件总是如此:( 如何正确编写.htaccess?
答案 0 :(得分:1)
RewriteBase仅用于RewriteRule,而不是REQUEST_URI。
我还没有测试过,但你可以使用这样的条件:
RewriteCondition %{REQUEST_URI} ^/~username/projectname/(.*)$
RewriteCondition /home/username/public_html/projectname/www/%1 -f
或者,如果projectname
和username
可以更改:
RewriteCondition %{REQUEST_URI} ^/~([^/]*)/([^/]*)/(.*)$
RewriteCondition /home/%1/public_html/%2/www/%3 -f
然后你可以根据需要制作RewriteRule。
RewriteRule ^/~([^/]*)/([^/]*)/(.*)$ /home/$1/public_html/$2/www/$3 [L]
RewriteRule (.*) app/file-not-found.php?url=$0 [QSA,L]
不要使用上面的代码指定任何RewriteBase