.htaccess重定向参数

时间:2015-12-02 22:40:49

标签: apache .htaccess redirect url-rewriting

我尝试了几个重定向但没有一个能满足我的需求。你能帮我弄清楚这一个吗?我知道,它已被多次回答,但我无法让它发挥作用。感谢。

我需要重定向from to

示例:

 /demo/details?acronym=text15

 /demo/text15

 /demo/details?acronym=text-c15

 /demo/text-c15

正确的重定向是:

#redirect from  "demo/details\?acronym=some-string" to "/demo/some-string"
RewriteCond %{THE_REQUEST} /details\?acronym=([^\s]+) [NC]
RewriteRule ^ /demo/%1? [NC,L,R]

2 个答案:

答案 0 :(得分:0)

非常简单

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^demo/([a-z0-9-]+)$ /demo/details?acronym=$1 [QSA,NC,L]

这里最重要的部分是你应该调用格式化链接而不是原始链接 例如/ demo / text15

那就是所有人

答案 1 :(得分:0)

您可以在.htaccess中使用以下规则:

 RewriteEngine on

#redirect from  "demo/details/acronym\?text=foo" to "/demo/foo"
RewriteCond %{THE_REQUEST} /details/acronym\?text=([^\s]+) [NC]
RewriteRule ^ /demo/%1? [NC,L,R]

#skip the rule if the request is for dir
RewriteCond %{REQUEST_FILENAME} !-d

 #skip the rule if the request is for file
 RewriteCond %{REQUEST_FILENAME} !-f

 #rewrite any other request  to "/demo/details?acronym=" 
 RewriteRule ^(?:demo/)?([^/]+)/?$ /demo/details/acronym?text=$1 [NC,L]