【问题标题】:RewriteRule not working in .htaccess nor apache2.confRewriteRule 在 .htaccess 和 apache2.conf 中不起作用
【发布时间】:2016-10-12 21:27:19
【问题描述】:

我对这个可能很简单的问题很生气。

我需要像这样重写所有的网址:

http://stage.mydomain.com/post/F9YxPF/my_post_titlehttp://stage.mydomain.com/post.php?uid_url=F9YxPF

.htaccess 被正确处理,当我设置基本规则时它正在工作,但是当我尝试构建一个重写器以匹配该结构时,我总是得到一个 404。

我们将不胜感激任何帮助!

编辑:我原来的 RewriteRule 是:

重写规则 ^/?post/([a-zA-Z0-9_-]+)/(\?.*)?$ /post.php?uid_url=$1 [L]

【问题讨论】:

  • 好吧,如果您不发布您有问题的规则,我们当然无法帮助您!
  • 没错,我使用的是这个:RewriteRule ^/?post/([a-zA-Z0-9_-]+)/(\?.*)? $ /post.php?uid_url=$1 [L]
  • 一般注意事项:请始终将附加信息直接包含在问题本身中。 cmets 中的技术细节很难阅读。问题下方有一个edit 按钮。手头的问题是匹配模式中的\?。文字问号不能是 URL 的一部分,因此该规则永远不会匹配。由于您对 uid 背后的内容不感兴趣,您可以放心地忽略它。正如我在下面的回答中所展示的那样。
  • 完成!再次感谢您的支持。

标签: .htaccess mod-rewrite


【解决方案1】:

粗略的猜测是这样的:

RewriteEngine on
RewriteRule ^/?post/([^/]+)/? /post.php?uid_url=$1 [L,QSA]

[^/] 模式当然可以更具体地定义,您需要提供一个明确的定义,哪些字符应该被接受为 uid。

但正如上面在 cmets 中所说:发布您当前正在尝试的错误规则确实很有意义。否则,这只是猜测工作...此外,查看您的 http 服务器错误日志文件将揭示有关 what 文件的其他详细信息,该文件正是服务器试图在内部访问的。

【讨论】:

  • 非常感谢 Arkascha,我刚刚修改了您建议的那个,现在它看起来像这样 RewriteRule ^/?post/([a-zA-Z0-9_-]+)/? /post.php?uid_url=$1 [L,QSA] 它运行良好!感谢您的支持。
猜你喜欢
  • 2013-06-22
  • 2012-12-10
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
相关资源
最近更新 更多