2011-01-20 94 views
2

正在開發一個應用程序,該應用程序與開啓了固定鏈接的wordpress網站並行構建。所以,稍後在htaccess中會有其他重寫處理wordpress的所有方面。但是,我試圖在我的重寫之前進行一些重寫。 - 以及在我之後使用[L]的couse。 一切工作完美,直到我嘗試添加選項到最後允許一個斜線或沒有斜線(並仍然匹配)。RewriteRule可選的尾部斜槓問題

下面是這臺服務器上有什麼拋出一個500錯誤的例子:

RewriteRule ^app/([^/]+)/?$ /app/$1\.php [L,QSA] 

http://<domain>.com/app/login 
or 
http://<domain>.com/app/login/ 

但接下來的作品就好了,而且是在htaccess的前面的例子以上。

RewriteRule ^app/p/([^/]+)/?$ /app/page.php?page_slug=$1 [L,QSA] 

http://<domain>.com/app/p/styles 
or 
http://<domain>.com/app/p/styles/ 

我已經試過變化,很少/沒有成功。

RewriteRule ^app/([^/]+)/{0,1}$ /app/$1\.php [L,QSA] 
and 
RewriteRule ^app/([^/]+)[p]/[\p]?$ /app/$1\.php [L,QSA] 

回答

2

這是因爲你的目標位置/app/$1.php爲源位置^app/([^/]+)/?$完美匹配。所以頁面重定向到自己。

RewriteCond %{REQUEST_URI} !\.php 
RewriteRule ^app/([^/]+)/?$ /app/$1.php [L,QSA] 
+0

明白了!因此,在這種情況下,最後需要使用斜線以使源與目標不同。看起來唯一的解決方法是選擇不同的源名稱...因爲目標無法更改。 – tdurham 2011-01-20 07:44:12