修改htaccess以从url中提取和删除整数值

时间:2012-06-06 15:27:57

标签: php .htaccess

我有一个htaccess文件,如下所示:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?$1=$1&pid=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ /index.php?pid=$1 [L,QSA]

指向fe“管理/模块”之类的链接到“index.php / administration = administration& pid = modules”或“administration”到“index.php?pid = administration”。

对于Performance-Reasons,我想修改htaccess,所以它可以指向像

这样的链接

“administration_55”

的index.php?PID = 55"

所以'55'(记录的id)必须以某种方式从pid-parameter“pid = administration_55”中提取。因为我也希望有一个像“www.example.com/administration”这样没有“_55”部分的可见网址,我想知道,这将如何以一种好的方式完成,直接在htaccess文件中或用标题重定向响应php文件?

Thanx in Advance,Jayden

3 个答案:

答案 0 :(得分:0)

仅仅因为你不能意味着你应该......你不能在基于REFERRER的网站本身的index.php中处理这个问题,这会更加安全且不需要。 htaccess支持启用...?

答案 1 :(得分:0)

您可以使用htaccess进行重定向,但必须使用带有_55部分的网址

答案 2 :(得分:0)

# e.g. /administration/modules 
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?$1=$1&pid=$2 [L,QSA]
# e.g. /administration_55
RewriteRule ^([^/]+)_([[0-9]+)/?$ /index.php?$1=$1&pid=$2 [L,QSA]
# e.g. /test
RewriteRule ^([^/]+)/?$ /index.php?pid=$1 [L,QSA]

至于删除55,最好的方法是使用PHP。我的数据库表中有一个名为'url'的单独字段,因此我可以找到具有正确url(-part)的记录。为了提高性能,我还在此字段中添加了索引。