【发布时间】:2014-06-23 12:46:26
【问题描述】:
我对 URL 重写非常陌生。我想要实现的是有两个主要规则:
- 隐藏所有 .php 扩展名
- 将
domain.com/p.php?id=1重写为domain.com/p/1
这是我目前所拥有的:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^p/(.+)$ p.php?id=$1 [L]
起初这似乎可行:所有 .php 扩展名都被隐藏,键入 domain.com/p/1 显示 domain.com/p.php?id=1。
但是,我刚刚意识到此页面上的 PHP GET 方法选择了错误的值:虽然我希望它选择 1,但它实际上选择了 1.php/1。起初我没有注意到它,因为基于 $_GET 的数据库查询实际上可以工作,现在我知道该值是错误的,这对我来说似乎很奇怪。
我怎样才能使这两个重写规则的组合按预期工作?
谢谢!
【问题讨论】:
-
RewriteRule ^(.*)$ $1.php是这里的毒物民意调查
标签: php apache .htaccess mod-rewrite url-rewriting