我尝试了几个重定向但没有一个能满足我的需求。你能帮我弄清楚这一个吗?我知道,它已被多次回答,但我无法让它发挥作用。感谢。
示例:
/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]
答案 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]