我试图重定向这样的链接:
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]
顺便说一下,哪个链接实际会在浏览器中显示?
答案 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
。