2014-10-22 171 views
0

我總是與.htaccess糾纏在一起,所以希望有人能幫我寫一個。 我發現網上的東西相似,我想要什麼,但我沒有足夠的信心 改寫自己重寫:P漂亮的網址.htaccess

我想這一點:

/foo/ = index.php?a=foo 
/foo/bar/ = index.php?a=foo&b=bar 
etc. up to /foo/bar/baz/cat/dog/ (&e=dog) 

我也希望index.php來不可見,以便/index.php重寫爲/。

另一件事,我想那裏始終是跟隨斜線,因此有能力做 ...

/foo/bar/baz/?another=whatever 

我的目錄如/圖片/我不希望這適用於, 所以我必須爲此做一個白名單或是否有某些我可以使用的重定向?

乾杯!

+0

你發現你試過的代碼是什麼? – 2014-10-22 08:25:51

回答

0

您不需要將目錄白名單。這就是RewriteConds的用途。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

它檢查以確保它不是一個真正的文件或真正的目錄,然後執行RewriteRule。

在你的.htaccess文件中試試下面的這些規則來得到你想要的。

RewriteEngine On 
RewriteCond %{REQUEST_URI} /+[^\.]+$ 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+) index.php?a=$1&b=$2&c=$3&d=$4&e=$5&%{QUERY_STRING} [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) index.php?a=$1&b=$2&c=$3&d=$4&%{QUERY_STRING} [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/([^/]+) index.php?a=$1&b=$2&c=$3&%{QUERY_STRING} [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+) index.php?a=$1&b=$2&%{QUERY_STRING} [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+) index.php?a=$1&%{QUERY_STRING} [L] 
+0

除了重定向index.php之外,我已經從另一個教程中獲得了很多: https://ellislab.com/expressionengine/user-guide/urls/remove_index.php.html – Varrick 2014-10-22 10:15:23