我的目录结构如下:
/gallery
----index.php
----/23XASDTAGH
----/24XGA43KJA/
如果目录存在,我想使用mod重写来重写。这样:
www.example.com/gallery/23XASDTAGH/
变为
www.example.com/gallery/index.php?gallery=23XASDTAGH
但我想默默地这样做,所以网址没有变化。现在我有了这个:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}/ -d
RewriteRule (.*) /gallery/index.php?gallery=$1 [L]
与
一起使用 www.example.com/gallery/23XASDTAGH/
但奇怪的是,当我将结尾的斜线留下时,它会将网址更改为
www.example.com/gallery/23XASDTAGH/?gallery=23XASDTAGH
如何使用或不使用尾部斜杠来使其工作?
答案 0 :(得分:1)
我认为以下内容可以解决问题
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) /gallery/index.php?gallery=$1 [L]
第二行检查所请求的文件名是否是目录,如果是,则第三行执行实际重写
要尝试处理尾随斜杠问题,也许这样或类似的东西都可以使用
RewriteCond %{REQUEST_FILENAME} (.*)/?$
RewriteCond %1 -d
RewriteRule (.*)/$ /gallery/index.php?gallery=$1 [R=301]
答案 1 :(得分:0)
你可能想试试这个:
RewriteEngine on
RewriteRule ^(gallery)/([a-zA-Z0-9-_=]+)/?$ http://www.example.com/$1/index.php?$1=$2 [R=301,L]
永久重定向输入的网址(浏览器地址栏中的网址):
www.example.com/gallery/23XASDTAGH
或www.example.com/gallery/23XASDTAGH/
:
www.example.com/gallery/index.php?gallery=23XASDTAGH
答案 2 :(得分:-1)
最后想通了,我在重写规则的表达结尾处需要?/
来说斜杠是可选的。为什么正则表达式必须如此简单 hard 。 8 - )
正确表达:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([a-zA-Z0-9_-]+)?/$ /gallery/index.php?gallery=$1 [L]