Php 从URL中删除参数的htaccess重写规则

Php 从URL中删除参数的htaccess重写规则,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,用户在浏览器中键入以下内容,这将保留浏览器中的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/

用户在浏览器中键入以下内容,这将保留浏览器中的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时,相关文件链接似乎不起作用/

请参见以下内容之间的区别:

第二个不起作用,因为相对链接已断开。

  • 从正则表达式中去掉前导斜杠
  • 取出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]
  • 从正则表达式中去掉前导斜杠
  • 取出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]