使用.htaccess重写php页面的url

时间:2019-01-17 10:56:33

标签: php .htaccess

我有一个这样的网址

http://localhost/project/product_detail.php?pro_id=4&&pro_name=D.H._Tiffin_with_B.B._Packing

我要这样重写

http://localhost/project/product_detail/4/D.H._Tiffin_with_B.B._Packing

我也在xamp\apache\conf\httpd.conf中进行了更改。

LoadModule rewrite_module modules/mod_rewrite.so
AllowOverride All

我尝试了.htaccess代码,如下所示:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^project/([a-zA-Z0-9-]+)$ project/product_detail.php?pro_id=1&&pro_name=$1 [L,QSA]

我尝试了上面的代码,但没有用。

1 个答案:

答案 0 :(得分:0)

您自己发布的重写规则将永远不会应用于您引用的请求URL,因为该模式不匹配。

以下是您应该执行的操作:

RewriteEngine on
RewriteRule ^/?project/product_detail/(\d+)/(.+)$ /project/product_detail.php?pro_id=$1&&pro_name=$2 [END]

该规则在http服务器主机配置或动态配置文件(“ .htaccess”样式文件)中也应同样起作用。如果您需要使用动态文件,请确保启用了此类文件的解释,并且上述规则位于http主机DOCUMENT_ROOT文件夹中的此类文件中。

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。