【问题标题】:URL rewrite errors, possible overwriting?URL重写错误,可能覆盖?
【发布时间】:2016-02-16 17:37:32
【问题描述】:

我对 .htaccess 及其应用程序相当陌生,这是一个非常直截了当的问题。我的 .htaccess 中有以下重写规则。第一个 RewriteRule 替换了我文件中的所有 .php ,第二个 RewriteRule 是将链接中的问号覆盖为斜杠,但我不知道为什么第二个规则不起作用。在我的另一个包含指向“配置文件”链接的 PHP 文件中,指向它的链接是 <a href= "profile?'some id fetch from php'",链接中的 ? 可以正常工作,但是即使在我应用第二条规则之后,它也没有任何反应当我点击它时。第一条规则是否有可能以某种方式阻止第二条规则的发生?还是因为我的href链接出了问题?以下是我的 .htaccess。

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^profile/([0-9]+)$ profile?$1 [L]

提前感谢您的任何反馈。 雷

【问题讨论】:

  • 对不起,请忽略第二个重写规则中的附加p
  • 你可以edit这个问题来解决它。
  • 是的,谢谢,我没注意到

标签: .htaccess url mod-rewrite


【解决方案1】:

您的第一个重写模式接受 URI 中不包括点的任何字符,因此它也匹配“/profile/123”,

改变你的正则表达式模式:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/?$ $1.php [NC,L]
RewriteRule ^profile/([0-9]+)/?$ profile?$1 [L]

【讨论】:

  • 或者改变规则的顺序。
  • 大家好,感谢您的反馈,我已经尝试了这两种方法并玩了一下,但我仍然无法让它发挥作用。可能是我的文件中的链接导致了问题吗?
  • 我应该把链接改成别的吗?目前例如
猜你喜欢
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多