2015-01-13 45 views
1

工作,我是新來使用htaccess以及mod_rewrite的,所以我只是設法得到礦山運作重寫我的GET頁變量examples.com/page_name/的.htaccess mod_rewrite的沒有斜線

然而,這需要一個/之後,我知道它明確加入到重寫,但如果我刪除它,然後我得到一個500錯誤,我試過添加一個?之後,它會根據我在網上找到的資源使它成爲可選項,但是,它再次給了我一個500錯誤,是否有更好的寫作方式呢?

RewriteEngine On 
RewriteRule ^([^/]*)\/$ /?page=$1 [L] 
+0

'重寫規則^([^ /] *)(?:\ /)?$ /頁= $ 1 [L]'是什麼你要。 – Forien

回答

3

,因爲你已經創建了一個無限循環你得到一個500錯誤。

說明:(當斜線由可選)

  • domain.com/page_name/改寫爲/?page=page_name
  • /?page=page_name意味着/index.php?page=page_name
  • 但現在您的規則匹配index.php
  • - > LOOP

爲了避免它,可以如果請求的URI是不存在的文件/文件夾的前rewritting使用此代碼代替

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ /?page=$1 [L] 

此代碼檢查。
如果您沒有使斜線可選,則您的規則可以執行此操作只有

RewriteRule ^([^/]+)/$ /?page=$1 [L] 

而且這將是一個更好的主意,因爲你不會有重複的內容(2個不同的網址 - 附/不帶尾隨slash-給予相同的內容:的搜索引擎)。

結論:選擇一種格式,但不是兩種。如果你選擇without trailing slash格式,那麼你可以使用我的第一部分代碼(你可以刪除?)。否則,你可以選擇我的第二個(看起來與你的幾乎一樣)。

注意:你不需要逃避/mod_rewrite的

0

斜槓被轉義,所以如果你想刪除尾隨的,你必須刪除反斜槓。

RewriteEngine On 
RewriteRule ^([^\/]*)$ /?page=$1 [L] 

如果你想尾隨斜線可選的,試試這個:

RewriteEngine On 
RewriteRule ^([^\/]*)\/?$ /?page=$1 [L] 
+1

不幸的是,這根本不能解決任何問題。你可以看到我的答案。 –