Apache url的正则表达式重写.htaccess

时间:2013-10-22 15:46:04

标签: regex apache .htaccess

我想改写一下:

www.mywebsite.com/i.php?photo=1234

www.mywebsite.com/i/1234

任何人都可以帮助我使用.htaccess

的正确正则表达式

2 个答案:

答案 0 :(得分:2)

试试这个:

RewriteRule ^i/([0-9]+)/?$     i.php?photo=$1     [NC,L]

请记住在声明规则之前打开重写引擎:

RewriteEngine On

答案 1 :(得分:0)

您需要做的第一件事是确保关闭Multiviews,因为您有一个/i/的URI以及一个名为/i.php的脚本。多视图和mod_negotiation将绕过mod_rewrite,您的规则将被跳过。

Options +FollowSymlinks -Multiviews
RewriteEngine On

RewriteRule ^i/([0-9]+)/?$ /i.php?photo=$1 [L,QSA]

并重定向不受您控制的链接:

RewriteCond %{THE_REQUEST} \ /+i\.php\?photo=([^&\ ]+)
RewriteRule ^ /i/%1/ [L,R=301]