将以_word.html结尾的网址重写为?word

时间:2013-10-03 14:52:21

标签: regex apache .htaccess mod-rewrite url-rewriting

如何通过.htaccess重写网址,以便网址以:

结尾
_slides.html

可通过

访问
?slides

典型的网址在服务器上显示如下:

website.com/directory1/_slides.html

2 个答案:

答案 0 :(得分:1)

尝试将此添加到文档根目录中的htaccess文件:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^([^=]+)$
RewriteRule ^([^/])*/$ /$1/_%1.html [L]

这应该接受http://website.com/directory1/?slides之类的请求,并在/directory1/_slides.html上提供内容。

要重定向直接访问_文件,您还可以添加:

RewriteCond %{THE_REQUEST} \ /([^/]*)/_([^.\ \?]+)\.html(\ |$)
RewriteRule ^ /%1/?%2 [L,R=301]

答案 1 :(得分:1)

您是说要将“/ $any / _ slides.html”重写为“/ $any /?幻灯片”吗?那么请试试这个:

RewriteEngine on
RewriteRule ^/?([^/]+)/_slides.html$ /$1/?slides [L]

还是相反?像这样(因为我在你的问题中感到困惑)

RewriteEngine on
RewriteRule ^/?([^/]+)/\?slides$ /$1/_slides.html [L]

最后一次尝试

现在我知道您要查看带有“/ $any / slides_html”内容的“/ $any /?幻灯片” ,现在尝试确保您的 .htaccess 文件位于域的根目录中并尝试以下操作:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^slides$
RewriteRule ^/?([^/]+)/$ /$1/_slides.html [L]

如果这些指令不起作用,则不可能重写带有查询字符串的动态目录。