2013-12-09 72 views
0

我在orther與我的.htaccess文件strugglening來實現這一目標:用1個或多個參數重寫URL?

a.com/male-items (OR)  
a.com/male-items/popularity -> a.com/index.php?g=m&sort-popularity 

a.com/female-items (OR)  
a.com/female-items/popularity -> a.com/index.php?g=f&sort=popularity 

a.com/male-items/alphabet  -> a.com/index.php?g=m&sort=alphabet 
a.com/male-items/alphabet/a -> a.com/index.php?g=m&sort=alphabet&l=a  
(and same for female) 

我知道它應該像

RewriteRule ^a$ a.com/index.php?q=$1 

但實際上,尋找到不同的國防部重寫/正則表達式的說明而作弊工作表對於使其工作起不了多大作用。最難的部分是瞭解如何在地址中定義不同的參數,然後在重寫的url中使用它們。

(任何與您的解決方案說明會appretiated)

+0

由於'Q,Q2,q3'等甚至沒有出現在原始的URI,他們不能在重寫的查詢字符串中使用。 – anubhava

+0

@anubhava:當然可以。他可能需要q中的第一個段,q2中的第二個,...... – ThiefMaster

+0

@Roy:這種情況很常見,可以將所有請求重寫爲實際上不存在於PHP文件中的文件,然後通過解析REQUEST_URI那裏。 – ThiefMaster

回答

0

這些htaccess的線路全部不存在的文件/文件夾重定向到的index.php:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

裏面的index.php,你可以使用:$_SERVER['REQUEST_URI']解析你的參數。

1

使用您DOCUMENT_ROOT/.htaccess文件下列規則:

RewriteEngine On 

RewriteRule ^male-items/?$     /index.php?g=m&sort=popularity [L,QSA] 
RewriteRule ^male-items/([^/]+)/?$   /index.php?g=m&sort=$2 [L,QSA] 
RewriteRule ^male-items/([^/]+)/([^/]+)/?$ /index.php?g=m&sort=$2&l=$3 [L,QSA] 

RewriteRule ^female-items/?$     /index.php?g=f&sort=popularity [L,QSA] 
RewriteRule ^female-items/([^/]+)/?$   /index.php?g=f&sort=$2 [L,QSA] 
RewriteRule ^female-items/([^/]+)/([^/]+)/?$ /index.php?g=f&sort=$2&l=$3 [L,QSA]