配置htaccess文件以在斜杠和重定向变量后忽略最后一个目录

时间:2012-06-01 12:54:49

标签: php .htaccess

例如:

www.site.com/your/blue

将重定向到... www.site.com/your/index.php?=blue

现在当有人在www.site.com/your/blue中输入时,它会抛出一个错误,指出页面不存在。 谁能帮我这个?提前谢谢你。

2 个答案:

答案 0 :(得分:2)

使用mod rewrite

RewriteEngine On   
RewriteRule ^(.*)/(.*)/$ $1/index.php?p=$2 [L]

(我添加了p作为查询字符串的名称,因为它不能为空)


此外,您可以在RewriteEngine On和重写规则之间添加以下代码行,以确保有一个尾部斜杠(建议使用):

# Add trailing slash
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ http://www.site.com/$1/ [R=301,L]

答案 1 :(得分:2)

必须将Mod重写用于此类重定向:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ $1/index.php?page=$2 [L]
</IfModule>

此正则表达式可确保将干净的网址传递到网站,并使用或不使用结束斜杠。

注意:传递给PHP的参数需要有一个名称,所以我添加了page =

如果您希望它在没有任何限制的情况下工作(空格可以使用)

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^([^/]+)/([^/]+)/?$ $1/index.php?page=$2 [L]
</IfModule>