Apache .htaccess用斜杠重写查询字符串

时间:2011-08-05 19:58:36

标签: apache mod-rewrite url-rewriting

我试图找出Apache的Mod Rewrite,到目前为止它还没有用。这是我想要做的。

我的网站根目录中有一个index.php,它是所有页面的模板。我希望能够在目录中组织我的文件,查询字符串将有斜杠。

因此...

http://www.example.com/page.html

应该是......

http://www.example.com/index.php?url=page

和...

http://www.example.com/directory/page.html

应该是......

http://www.example.com/index.php?url=directory/page

我已经开始工作,但我希望能够深入 n 目录......

http://www.example.com/directory1/directory2/page.html

应该是......

http://www.example.com/index.php?url=directory1/directory2/page

我知道我可以为我想要去的很多目录添加一堆重写但是有一行RewriteRule会在第一行之后放任何东西/将被视为查询字符串吗?

这就是我到目前为止......

RewriteEngine on
RewriteRule ^([a-z-]+)\.html$ index.php?url=$1
RewriteRule ^faculty/([a-z-]+)\.html$ index.php?url=faculty/$1

在幕后,PHP包含了指定网址的文件。

2 个答案:

答案 0 :(得分:1)

  1. 包含从用户传递的名称的文件是个坏主意。至少实施非常强大的验证,否则准备被黑客攻击。

  2. 如果你仍想使用它 - 这是规则:

    RewriteRule ^(.+)\.html$ index.php?url=$1 [QSA,L]

答案 1 :(得分:0)

这应该将任何带有.html结尾的内容重定向到index.php?url = any

www.example.com =>的index.php?URL = www.example.com/test1/test2 =>的index.php?URL = TEST1 / TEST2

        RewriteRule ^([a-z-]+)\.html$ index.php?url=$1   [L,NC]