Php 从URL中删除参数的htaccess重写规则
用户在浏览器中键入以下内容,这将保留浏览器中的url: xyz.com/info/productname/ 在内部,这变成: xyz.com/info/index.php?product=productname 以下是: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/
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]