1

用户在浏览器中键入以下内容,这仍然是浏览器中的 url:xyz.com/info/productname/

在内部这变成:xyz.com/info/index.php?product=productname

以下:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www\.)?xyz\.com$ [NC]
RewriteRule ^info/([^/]+)/?$ /info/index.php?product=$1 [L,NC,QSA]

真的很近。不幸的是,问题似乎是使用 xyz.com/info/productname/ 时相关文件链接不起作用

查看两者之间的区别:

http://xyz.com/info/swooshhttp://xyz.com/info/swoosh/

第二个不起作用,因为相关链接已损坏。

4

1 回答 1

1
  • 从正则表达式中取出前导斜杠
  • 取出R=302
  • 添加 QSA
  • 确保请求不是针对 file.directory

修改规则:

# fix relative links of css, js, images
RewriteRule ^info/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [L,NC,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www\.)?xyz\.com$ [NC]
RewriteRule ^info/([^/.]+)/?$ /info/index.php?product=$1 [L,NC,QSA]
于 2013-11-08T18:44:36.150 回答