我使用mod_rewrite制作个人资料页用户名,如mydomain.com/johndoe
下面的代码工作得很好直到我尝试访问目录,例如www.mydomain.com/images,然后我被抛入到{的无限循环中{3}}
当前代码:
RewriteEngine On
# Add WWW
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Redirect usernames
RewriteRule ^([A-Za-z0-9-]+)?$ profile.php?username=$1 [L]
我也试过这个,但它也不起作用:
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^([A-Za-z0-9-]+)?$ profile.php?username=$1 [L]
我哪里错了?
答案 0 :(得分:3)
问题是,你必须决定它是一个现有的目录,还是一个包含用户名或其他动作的假uri,它会调用一些php脚本或其他东西。
使用!-d的方法是正确的,但也有!-f for files。
尝试类似
的内容RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^([A-Za-z0-9-]+)?$ profile.php?username=$1 [L]