2014-10-09 187 views
1

我已經爬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 

回答

0

我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 /重寫規則?