htaccess重写URL以仅删除一个php文件的$ _GET查询

时间:2014-12-28 19:11:39

标签: php .htaccess

我正在制作一个使用$ _GET方法在网页上显示某些信息的网站。我在htaccess文件中格式化页面的URL时遇到了一些问题,因为我想删除变量并缩短我的URL以改进URL的结构和层次结构。

我目前的网址如下:

site.com/project?pn=my_project

'pn'变量指的是从服务器获取的项目名称。我最终想要的是URL的方式如下:

site.com/my-project

我想确保'site.com/home'和其他类似的页面不受影响,并且这些空格不会被视为下划线,而是作为heiphens。

我将如何进行这些更改?

请注意我当前的htaccess文件包含以下内容(我想保留它)

RewriteEngine On
RewriteCond         %{REQUEST_FILENAME} !-f
RewriteRule         ^([^\.]+)$ $1.php [NC,L]

如果可以解释答案以便我可以再次为另一页重写规则,我会非常感激。

2 个答案:

答案 0 :(得分:3)

在.htaccess文件中,添加:

RewriteEngine On
RewriteRule ^page/(\d+) /page?referenceid=$1

您可以阅读有关mod_rewrite(允许此插件的插件)here的所有内容。

答案 1 :(得分:0)

您需要使用重写规则。假设你正在使用Apache,试试这个:

将这些规则放在文档根目录下的.htaccess文件中(如果您有权访问apache2.conf,那就更好了)

RewriteEngine on
RewriteRule ^/?page(/.*)?$ %{DOCUMENT_ROOT}/page?referenceid=$1 [L]

^/?page(/.*)?$:匹配/ page / $ 1(?标记确保与所有正则表达式兼容)

%{DOCUMENT_ROOT}是文档根集在全局或目录

中的位置

$1是/ page /

之后的参数

[L]表示停止处理此规则后的任何​​规则

只需在现有规则之后添加RewriteRule。