我正在尝试创建一个.htaccess文件,需要将目录看作1变量:ex。 http://example.com/this-is-page-one/sub-dir
会将this-is-page-one/sub-dir
作为变量传递给PHP。
我现在有这个:
Options +FollowSymLinks
RewriteEngine on
# Page rewriting
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /page.php?url=$1
# Add trailing slash to urls
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule ^(.*)$ %{REQUEST_URI}/ [R=301,L]
只要在URL后面键入尾部斜杠,这样就可以正常工作。但正如你所看到的,htaccess会在你的URL后面加上一个斜杠。当发生这种情况时,它会自动将?url=
变量置于其后面。
EC。 http://example.com/this-is-page-one/sub-dir/?url=this-is-page-one/sub-dir
有人看到我做错了吗?
答案 0 :(得分:1)
在第一组之前移动第二组条件和规则:
Options +FollowSymLinks
RewriteEngine on
# Add trailing slash to urls
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule ^(.*)$ %{REQUEST_URI}/ [R=301,L]
# Page rewriting
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /page.php?url=$1