.htaccess RewriteRule不会重定向页面

时间:2016-09-17 08:21:36

标签: php apache .htaccess redirect mod-rewrite

我试图重定向这样的链接:

http://spicyyeti.com/strangers/2

等同于:

http://spicyyeti.com/strangers/strangers.php?img=2

等.htaccess写了:

RewriteRule ^/strangers/([0-9]+)$ /strangers/strangers.php?img=$1 [R=301]

但没有发生任何事情。我看不出有什么问题 - 我是以错误的顺序写的?这是我的完整.htaccess以防万一有些冲突,我没有看到:

# use php in html files i think
AddHandler application/x-httpd-php5 .html

DirectoryIndex home.html 

RewriteEngine On

#removes html extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC]

RewriteRule ^/strangers/([0-9]+)$ /strangers/strangers.php?img=$1 [R=301]
顺便说一下,哪个链接实际会在浏览器中显示?

1 个答案:

答案 0 :(得分:1)

您的第一条规则将匹配并重写为strangers/2.html,您需要一个条件才能从第一条规则中排除strangers URI:

RewriteBase /
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/strangers/.*$
RewriteRule ^([^\.]+)$ $1.html [NC,L]

RewriteRule ^strangers/([0-9]+)$ /strangers/strangers.php?img=$1 [L]

我从最后一条规则中移除了301标志。我假设您并非真的想重定向到/strangers/strangers.php?img=2,而是在浏览器网址栏中显示strangers/2,而apache在封面下执行/strangers/strangers.php?img=$1