.htaccess重定向,如果搜索词前面有一些字符串

时间:2013-05-20 20:53:46

标签: apache .htaccess mod-rewrite

我需要帮助创建一些.htaccess规则。目前我有这个:

RewriteEngine On

Redirect 404 /favicon.ico

#Check if request was made for RSS feed
RewriteCond %{REQUEST_URI} ^(.+)/events($|/) [NC,OR]
RewriteCond %{REQUEST_URI} ^(.+)/tickers($|/) [NC]
RewriteRule ^(.*)$ rss.php/?$1 [L]

我需要什么:

  • 如果网址如下:domain.com/events/,请勿重定向
  • 如果网址如下:domain.com/ [anything]/events/,请执行内部重定向
  • events也可以是tickers

2 个答案:

答案 0 :(得分:1)

不应查询REQUEST_URI,而应在RewriteRule本身处理。它实际上是一个相当简单的匹配模式,建议使用[^/]+将第一个/的所有字符捕获到$1。如果该组不存在,则不会进行重写。要在第一个events之后允许tickers/,请使用(events|tickers)

RewriteEngine On
RewriteRule ^([^/]+)/(events|tickers) rss.php/?$1 [L,NC]

没有必要匹配$或尾部斜杠,因为您没有在重写的URL中使用它们。如果您执行需要匹配它,以便在URL为/something/events/somethingelse时不重写,只需使用/?$作为可选的尾部斜杠和字符串的结尾

RewriteRule ^([^/]+)/(events|tickers)/?$ rss.php/?$1 [L,NC]

答案 1 :(得分:0)

您可以尝试在最后添加一个条件来重写/ events / to / events /并查看它是否会覆盖上一个匹配。