htaccess - 使用原始URL作为参数重定向没有扩展名的页面

时间:2017-03-26 16:50:37

标签: php .htaccess

我正在尝试设置一个重写规则,让客户访问单个产品页面(php文件)到一个页面,产品名称作为参数传递。旧格式是

http://example.com/product,新格式为http://example.com/store.php?id=product

我可以使用以下规则

RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+).php$ store.php?url=$1 [QSA,L]

执行重定向,但仅当客户在其原始请求中包含.php扩展名时才有效。同样,我可以使用此规则:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

消除了用户输入扩展名的需要,但我一直无法成功地将两者结合起来。我尝试将第一条规则改为

RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+).$ store.php?url=$1 [QSA,L]

但这也会重定向图像和样式表,使网站无法使用。

更改我的.htaccess文件以满足这两个目标的最佳方法是什么(无需扩展名,重定向到原始页面名称作为参数的单页)?

提前致谢!

1 个答案:

答案 0 :(得分:0)

见这里:https://github.com/fxstar/openshift/blob/master/.htaccess

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+?/((img|css|js|media|upload)/.+)$ /$1
RewriteRule ^([a-zA-Z0-9-]+)$ store.php?id=$1 [L,NC]