【问题标题】:Re-writing Dynamic URL with .htaccess使用 .htaccess 重写动态 URL
【发布时间】: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


【解决方案1】:

您很可能启用了MultiViews 选项。

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

Options -MultiViews

禁用MultiViews 后,当您请求/file 时,它不会服务/file.php

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

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

【讨论】:

  • 启用多视图后我收到的消息:“在此服务器上找不到请求的 URL /archief/test-article。然后我按照您的建议禁用了多视图,但现在我收到以下消息:“内部服务器错误:服务器遇到内部错误或配置错误,无法完成您的请求。”
  • 您能否检查您的 Apache 错误日志以了解导致 500 的原因?
  • 这是错误日志:[Tue May 20 13:12:12 2014] [error] [client (ip)] 由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。
  • 这意味着你有一些循环的规则。您可以发布您的完整 .htaccess 问题吗?
  • 我在上面添加了完整的 .htaccess 文件。
猜你喜欢
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多