【发布时间】:2014-07-09 02:34:53
【问题描述】:
我想删除所有网页末尾的“.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
【问题讨论】:
-
尝试删除
^archive/中的插入符号,如果可行,请尝试改用^/archive/ -
如果您试图从所有网页的末尾删除“php”,
RewriteRule ^(.*)$ $1.html怎么能正常工作? -
@Joh Lin:我不知道,但它有效。当实际文件是 example.com/archive/2014.php 时,它会在我链接到 example/archive/2014 时加载正确的页面
-
我编辑了我的代码。我现在禁用了 Multiviews,但收到以下错误日志:[Tue May 20 13:12:12 2014] [error] [client (ip)] 由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯
标签: php .htaccess url mod-rewrite dynamic