htaccess的重定向URL搜索引擎优化友好的URL

问题描述:

我已经爬StackExchange 3天现在接近找到解决我的问题,但要来了短。htaccess的重定向URL搜索引擎优化友好的URL

我正在使用htaccess重写和重定向到搜索引擎友好的网址的网址。我的htaccess目前如下。

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 [L,QSA] 

######################################## 
# REMOVE INDEX.PHP FROM THE URL 
######################################## 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC] 
RewriteRule^%1 [R=301,L] 

################################################## 
# REWRITE QUERY STRING INTO SEO FRIENDLY URL 
################################################## 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?page=([^\s]+)? [NC] 
RewriteRule^/%1? [R=301,L] 

目前我的链接传递1个主要参数'?page = somepage'。在我的用户页面上,我有链接不仅传递页面参数,还传递用户的ID。该链接如下:

?page=users&id=1 

此外,用户必须编辑自己的个人资料中,这样的链接是这样的:

?page=users&id=1&do=edit 

我htaccess的处理重写和URL重定向正确,但仅当{QUERY_STRING}仅传递一个参数时。

我与我现有的RewriteCond出场寻找查询字符串多个参数,并试图改变重写规则来处理查询字符串多个参数。我在处理2个参数时很成功,但是我的原始规则(对于1个参数)破裂了。

我应该如何去写我的RewriteCond /重写规则与1个或以上{QUERY_STRING}参数来处理的URL?

我想我的网址去从:

?page=users 
?page=users&id=1 
?page=users&id=1&do=edit 

这样:

/users 
/users/1 
/users/1/edit 

我htaccess文件修修补补后,我设法找到一个解决我的问题。这只是证明,你正在寻找的答案通常是最明显,最容易被忽视的。以下是我更新的工作htaccess文件。

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 [L,QSA] 

######################################## 
# REMOVE INDEX.PHP FROM THE URL 
######################################## 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC] 
RewriteRule^%1 [R=301,L] 

################################################## 
# RERWITE QUERY STRING INTO SEO FRIENDLY URL 
################################################## 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?page=([^\s]+)? [NC] 
RewriteRule^/%1? [R=301] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?page=([^\s]+)&id=([^\s]+)? [NC] 
RewriteRule^/%1/%2? [R=301] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(?:index\.php)?\?page=([^\s]+)&id=([^\s]+)&do=([^\s]+)? [NC] 
RewriteRule^/%1/%2/%3? [R=301,L] 

虽然这工作适合我的需要,我有另外一个问题....有没有一种方法来简化这个文件我的htaccess的RewriteCond /重写规则?