2012-03-04 25 views
1

我有一個.htaccess文件簡化htaccess的

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^localhost/host 
RewriteRule (.*) http://localhost/host/$1 [R=301,L] 

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?seg1=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?seg1=$1 

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?seg1=$1&seg2=$2 
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?seg1=$1&seg2=$2 

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?seg1=$1&seg2=$2&seg3=$3 
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?seg1=$1&seg2=$2&seg3=$3 

我的問題,是有這些代碼的簡化的.htaccess? 謝謝!

+1

'[A-ZA-Z0-9 _-]'=>'?[ - \ W]' – TerryE 2012-03-04 16:41:10

+1

你只需要每個'.htaccess'文件都有一個'RewriteEngine On'語句。 – nfechner 2012-03-04 16:57:47

回答

4

如果你的PHP可以處理空參數正確,那麼爲什麼不

RewriteRule ^([-\w]+)?/?([-\w]+)?/?([-\w]+)?/?$ index.php?seg1=$1&seg2=$2&seg3=$3 

,而不是六個規則?

所以/ A將產生的index.php SEG1 =一個&段2 = & SEG3 =

+0

對不起,我是一個新手..我如何在.htaccess中編寫這些代碼?喜歡這個: ? (。*) 'RewriteEngine敘述On' '的RewriteCond%{HTTP_HOST} ^本地主機/ host' '重寫規則的http://本地主機/主機/ $ 1 [R = 301,L]'' 重寫規則^([ - \ [/ w] +)/?$ index.php?seg1 = $ 1&seg2 = $ 2&seg3 = $ 3' 它返回錯誤爲http:// localhost/host/page/about/ – 2012-03-04 16:56:38

+0

你在第二個' - \ w'之前缺少了一個[。如果你想調試你的regexps,請參閱http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules上的regexp_checker – TerryE 2012-03-04 17:08:45