使用.htaccess重写动态URL

时间:2014-05-20 17:36:30

标签: php .htaccess url mod-rewrite dynamic

我想删除" .php"在所有网页的末尾 和 重写我的动态网址" example.com/archive?url = ..."

到目前为止我得到了什么:

Options -MultiViews

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

这部分工作正常,但现在我还要为网站的以下部分重写我的动态网址。

旧网址: example.com/archive?url=test-article

新网址: example.com/archive/test-article

RewriteRule ^archive/([^/]+)$ archive?url=$1

这部分不起作用。我在这里缺少什么?

它用于插件域,所以这可能与此问题有关吗?

编辑1:

我在.htaccess文件中放了一些垃圾,它会产生错误,所以我肯定知道它正在读取文件。

编辑2:

我按照以下建议禁用了多视图,但现在出现内部服务器错误。 这是错误日志:

[Tue May 20 13:12:12 2014] [error] [client(ip)]由于可能的配置错误,请求超出了10次内部重定向的限制。使用' LimitInternalRecursion'必要时增加限额。使用' LogLevel debug'获得回溯

编辑3:我找到了解决方案

我通过将最后一条规则更改为:

解决了这个问题
RewriteRule ^news/([^/]+)$ archive?url=$1

1 个答案:

答案 0 :(得分:1)

您很可能已启用选项MultiViews

您可以使用以下方法禁用它:

Options -MultiViews

禁用MultiViews后,当您请求/file.php时,它将无法提供/file

编辑:根据您修改过的问题,您可以这样做:

RewriteRule ^news/([^/]+)$ archive?url=$1