是否可以在URL中的“ - ”之后定位字符串以重定向到另一个页面?
假设我们有这两个网址:
1. www.domain.com/some/some2/some3/my-page.html
2. www.domain.com/some/some2/some3/my-page--woohoo.html
首先只显示my-page.html的内容。
我需要的是将第二个网址重定向到
www.domain.com/index.php?pagename=$matches[4]&var=$string
所以在这种情况下它将是:
www.domain.com/index.php?pagename=my-page&var=woohoo
有没有想过是否可能?
非常感谢你!
答案 0 :(得分:1)
是的,这是可能的。我想你正在寻找这样的东西:
模式:
^(.*?)\/.*\/([a-zA-Z-]+)--(.*)\..*$
^
在字符串(.*?)
匹配任何字符(换行符除外)作为捕获组\/
匹配字符/字面[a-zA-Z-]+
匹配提及的列表a-z, A-Z, -
--
匹配字符 - 字面意思$
断言字符串末尾的位置换人:
$1/index.php?pagename=$2&var=$3
由于您的问题已使用apache
标记,因此可以提供帮助:
#With mod_rewrite
RewriteEngine on
RewriteRule "(.*?)\/.*\/([a-zA-Z-]+)--(.*)\..*$" "$1/index.php?pagename=$2&var=$3" [R,L]
#With RedirectMatch
RedirectMatch "(.*?)\/.*\/([a-zA-Z-]+)--(.*)\..*$" "$1/index.php?pagename=$2&var=$3"
答案 1 :(得分:1)
您可以在server.config或htaccess中使用以下规则:
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^/]+)--([^.]+)\.html [NC]
RewriteRule ^ /index.php?pagename=%1&var=%2 [NC,L,R]
这将重定向:
到