PHP - 动态链接重写.HTACCESS

时间:2018-05-30 07:31:40

标签: php .htaccess url-rewriting

我很难过。 HTACCESS是我讨厌的东西,我正在努力做到这一点。我有一台运行Linux的服务器,我认为是Debian。好吧,就是这样:

有人应该解释一下,因为我是这个HTACCESS领域的新手。

我的动态网址:mydomain.com/index.php?Page=1&txtKeyword=

我需要对此进行美化:mydomain.com/index/Page/1/txtKeyword//

我的.htaccess是:

Options +FollowSymLinks
RewriteEngine on
RewriteRule index/Page/(.*)/txtKeyword/(.*)/ index.php?Page=$1&txtKeyword=$2
RewriteRule index/Page/(.*)/txtKeyword/(.*) index.php?Page=$1&txtKeyword=$2

我这样做了,什么也没发生。

我的PHP文件中还有什么需要添加的吗?或者只将上面的代码添加到.htaccess就足够了(???)我的url重写???

如果仅在.htaccess中添加并且没有任何内容可以添加到php文件中,为什么这不起作用???

感谢您的大力帮助。

1 个答案:

答案 0 :(得分:0)

我打算在这里走出去,猜猜你可能已经开启了Multiviews。在某些设置中,默认情况下会启用此选项,因为它有助于将请求与内容匹配。如果你确定你已经打开mod_rewrite并且你能够在htaccess文件中使用mod_rewrite(我需要FileInfo选项),那么你可以尝试关闭Multiviews。

启用多视图后,apache会看到/index/之类的请求,并看到有一个名为index.php的文件,并将请求直接模糊映射到index.php。因为这发生在mod_rewrite有机会做到这一点之前,这最终会绕过规则。在htaccess文件的顶部,尝试添加:

Options -Multiviews

另请注意,该规则需要mydomain.com/index/Page/1/txtKeyword/,并在内部将其转换为mydomain.com/index.php?Page=1&txtKeyword=。所以它希望您的所有链接看起来都像/index/Page/....这些规则将神奇地更改您网址地址栏中的内容。