.htaccess 永久链接:哪个重写规则?
.htaccess permalinks: which rewrite rule?
我想将所有用户从 mysite.com/username
重定向到 mysite.com/user.php?user=username
我现在使用以下代码:
RewriteEngine on
RewriteBase /
RewriteRule ([^/.]+)/ user.php?user= [L]
RewriteRule ([^/.]+) user.php?user= [L]
它有效,但它也将目录路径重定向到 user.php
(例如 mysite.com/css/style.css
-> mysite.com/user.php?user=css/style.css
)。
我该怎么办?有什么建议吗?
添加 RewriteCond
以排除以 .css
:
结尾的请求
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ([^/.]+)/? user.php?user= [L]
我使用问号 ?
将您的 2 条规则合二为一,使尾部正斜杠成为可选。
如果您愿意,也可以排除其他 "helper" 文件。并且排除重新重写资源请求可能会有所帮助 user.php:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpe?g|gif)$
RewriteCond %{REQUEST_URI} !user.php$
RewriteRule ([^/.]+)/? user.php?user= [L]
您只需要像这样跳过对真实文件和目录的请求:
RewriteEngine on
RewriteBase /
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/.]+)/?$ user.php?user= [L,QSA]
我想将所有用户从 mysite.com/username
重定向到 mysite.com/user.php?user=username
我现在使用以下代码:
RewriteEngine on
RewriteBase /
RewriteRule ([^/.]+)/ user.php?user= [L]
RewriteRule ([^/.]+) user.php?user= [L]
它有效,但它也将目录路径重定向到 user.php
(例如 mysite.com/css/style.css
-> mysite.com/user.php?user=css/style.css
)。
我该怎么办?有什么建议吗?
添加 RewriteCond
以排除以 .css
:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ([^/.]+)/? user.php?user= [L]
我使用问号 ?
将您的 2 条规则合二为一,使尾部正斜杠成为可选。
如果您愿意,也可以排除其他 "helper" 文件。并且排除重新重写资源请求可能会有所帮助 user.php:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpe?g|gif)$
RewriteCond %{REQUEST_URI} !user.php$
RewriteRule ([^/.]+)/? user.php?user= [L]
您只需要像这样跳过对真实文件和目录的请求:
RewriteEngine on
RewriteBase /
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([^/.]+)/?$ user.php?user= [L,QSA]