【问题标题】:Apache rewrite rule (url rewriting)Apache重写规则(url重写)
【发布时间】:2010-12-09 06:33:49
【问题描述】:

例如,如何进行 url 重写,我希望我看起来像

www.myurl.com/study-abroad/what/ever/

如果我输入

www.myurl.com/studyabroad/what/ever/

我们的想法是出国留学而不是出国留学

【问题讨论】:

  • 不要忘记,如果您更改 Google 知道的网址,您的排名将会下降。随着时间的推移,你会收回大部分,但不是 100%
  • 其实我的客户网站有破折号,即/study-abroad,所以他一直想把studyabroad换成study-abroad
  • 我刚刚注意到您不接受我的回答。但是,就目前的情况而言,我的答案会起作用,而 aefxx 不会。关于 aefxx,我认为他正在对您的问题进行不同的解释(也许是较早的措辞);这可以通过mod_rewrite 解决,但不能通过目前的答案来解决。

标签: regex mod-rewrite apache2


【解决方案1】:

如果您事先知道每个 URL 会遇到多少个破折号,就可以做到:

RewriteEngine On

# Replacing a single dash, e.g. example.com/study-abroad/what/ever
RewriteCond %{REQUEST_URI} ^([^-]*)-([^-]*)$
RewriteRule ^([^-]*)-([^-]*)$ $1$2 [L]

# Replacing two dashes, e.g. example.com/study-abroad/what-ever
RewriteCond %{REQUEST_URI} ^([^-]*)-([^-]*)-([^-]*)$
RewriteRule ^([^-]*)-([^-]*)-([^-]*)$ $1$2$3 [L]

...等等。不过,我可以补充一点,这是设计所破坏的,您应该重新考虑您的方法。

问候

【讨论】:

  • 谢谢大家的回复。我希望网址始终具有 - 即出国留学。
【解决方案2】:

对于这样一个简单的示例,我将使用mod_alias 重定向而不是mod_rewrite。示例:

Redirect permanent /studyabroad http://www.myurl.com/study-abroad

有关完整文档,请参阅 http://httpd.apache.org/docs/2.0/mod/mod_alias.html#redirect

您需要将这个(或类似的)sn-p 放入 Apache 配置文件:如果启用(并且如果您有适当的权限),这可能是您网站目录中的 .htaccess。或者,您可以修改主 Apache 配置。有关 Apache 配置文件的信息,请参阅 http://httpd.apache.org/docs/current/configuring.html

(已编辑以反转映射:添加破折号而不是删除它)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2013-03-06
    相关资源
    最近更新 更多