【发布时间】:2016-11-26 13:17:33
【问题描述】:
我正在尝试使用 htaccess mod-rewrite 来更改我使用的一些链接。我很擅长其他东西(PHP 和 MySQL),但是当谈到这个 htaccess 东西时,我的想法就离开了我。
这就是我想要的:
转换
mydomain.com/item.php?id=1
到
mydomain.com/item/1
如果页面变量也是这样设置的:
转换
mydomain.com/item.php?id=1&page=view
mydomain.com/item.php?id=1&page=remove
到
mydomain.com/item/view/1
mydomain.com/item/remove/1
但我也希望 .php 扩展名隐藏在整个网站中,而不仅仅是 item.php。像这样:
mydomain.com/item.php
mydomain.com/user.php
到
mydomain.com/item
mydomain.com/users
此外,如果有人访问旧的无聊链接(item.php 或 item.php?id=1),则应将其转发到更改后的版本(/item 或 /item/1)。
我这样做是为了隐藏 php 扩展:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(.+)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,QSA,L]
并且还这样做以使用查询字符串转发 item.php:
RewriteRule ^item/([0-9]+)/?$ /item.php?id=$1
他们似乎分开工作,但没有一起工作。我只是不知道如何使它适用于所有这些不同的东西。
我也希望能够使用
$_GET['id'] and $_GET['page']
在 item.php 中正常
【问题讨论】:
标签: php regex apache .htaccess mod-rewrite