htaccess重写后在URL中GET变量

时间:2014-01-02 19:10:06

标签: php .htaccess mod-rewrite

我正在尝试创建一个.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

有人看到我做错了吗?

1 个答案:

答案 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