使用以下htaccess
,我能够将example.com/profile.php?username=xyz
重写为example.com/xyz
,
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?user=$1
在上面添加以下内容,
RewriteRule ^([a-zA-Z0-9_-]+)/section$ section.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/section/$ section.php?user=$1
未将example.com/section.php?username=xyz
解析为example.com/xyz/section
。
我在这里做错了吗?
答案 0 :(得分:1)
首先:说话方式恰恰相反:您展示的规则是将/xyz
内部的请求重写为/profile.php?username=xyz
而将重写为反之亦然。
现在,如果您想要将/xyz/section
内部的请求内部重写为/section.php?username=xyz
,其中section
和xyz
是可变的,请尝试以下规则:
RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([^/]+)/?$ $2.php?user=$1
答案 1 :(得分:1)
我测试了它并且它有效。试试这个:
RewriteRule ^([a-zA-Z0-9_-]+)\/section$ section.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)\/section\/$ section.php?user=$1
由于/
是正则表达式分隔符,我所做的就是转义网址中的/
。
答案 2 :(得分:1)
要在正确的目录中查找静态文件(images,css)而不必编写文件地址,请执行以下操作:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
在编写RageD建议的代码之前
(抱歉,应该将其发布为评论,但我需要换行)