2015-05-07 67 views
0

我知道這個問題已經在這個論壇上多次發佈。重寫我的.HTACCESS文件

而且,我已遵循給出的每個示例。試過每個代碼。

而且,我仍然無法產生所需的結果。

我在與重寫我的.htaccess文件

基本上,我想要做的4件事了一個問題:

(一)刪除所有PHP擴展

(b)移走所有HTML擴展

(c)中去除任何尾隨斜槓

(d)添加一串 「jibberish」 的任何URL的末尾,

這樣鏈接對未經訓練的眼睛是不可見的。

我還沒有發現任何關於網上如何處理第四個問題

對於前三,我得到這個從一個在線教程:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

# remove the .html extension 
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP 
RewriteRule (.*)\.html$ $1 [R=301] 

# remove the .php extension 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

# remove trailing slash if not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /$ 
# RewriteRule (.*)/ $1 [R=301] 
RewriteRule ^([^/]+)/$ /$1 [R=301,L,NE] 

</IfModule> 
# END WordPress 

但是,它不工作。

在我的HTML/PHP文件中,我試圖通過刪除擴展來運行測試。

例如,我改變了:

<"/My_folder/begin.html"> to <"/My_folder/begin"> 

我去掉了HTML擴展名(我也做了同樣的PHP文件,太)

我,

404錯誤:「 Page Not Found「

顯然,我的HTACCESS文件是wron G。

不過,不知道是什麼問題:(

UPDATE

經過廣泛的研究,這是我一直爲我的.htaccess文件中創建:

# disable directory browsing 
Options -Indexes 

# enable Multiviews 
Options -MultiViews 

# allow server to process and follow all "fictional" URLs. 
Options +FollowSymlinks 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php [NC,L] 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
</IfModule> 

# END WordPress 

但是,它仍然無法正常工作

UPDATE

我終於得到了它的工作

我只是註釋掉從代碼每隔一行,只留下這樣的:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
# disable directory browsing 
Options -Indexes 
# enable Multiviews 
Options -MultiViews 
# allow server to process and follow all "fictional" URLs. 
Options +FollowSymlinks 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 

#RewriteEngine On 
#RewriteBase/
#RewriteRule ^index\.php$ - [L] 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteRule . /index.php [L] 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteRule ^([^/]+)/$ $1.php [NC,L] 
#RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
</IfModule> 

# END WordPress 

對於我的世界,我無法弄清楚到底發生了什麼煩心事代碼放在第一位。

顯然,htaccess可以接受數百行代碼。

但是,如何將它們按正確的順序分層?因爲,通過消除(也就是說,單獨註釋每行)過程,我可以得出結論:我的代碼語法錯了!

但是,爲什麼呢?

我應該在每個單一規則之前聲明一個條件(COND)嗎?

像這樣:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php [NC,L] 

或者...........我應申報的條件只有一次..........然後右鍵以下所有規則它:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php [NC,L] 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 

我已經檢查了每一個可用的在線教程,並沒有解決這一點的任何地方。

+0

你有404,因爲它重定向到頁面,而不擴展,犯規存在。 – pbalazek

+0

是的,我知道。我的問題是:htaccess文件有什麼問題? – phpnewbie2015

回答

0

要回答你在評論中提到的問題..你的htaccess 不是正確配置。

我在網上發現了一個非常好的解釋答案。 Link here

一些迂迴的嘗試後,我設法URL重寫工作,我想,這樣我可以做漂亮的擴展名 網址我的網站的方式(例如domain.com/thispage)。

因爲我個人認爲htaccess以及國防部重寫是很差 記錄除了痛苦技術Apache文檔,我 以爲我會崩潰的代碼我使用:

選項+的FollowSymLinks首先,爲了安全起見,我們確定 確保FollowSymlinks選項已啓用,因此服務器將實際處理並遵循我們的「虛構」URL。

RewriteEngine On RewriteEngine是修改重寫的工作人員,要去做所有的工作,所以我們必須打開它。

RewriteBase/yourdir這讓我們設置的任何目錄作爲基礎 重寫,並使得它更容易寫我們的正則表達式和 重寫,因爲我們沒有對付討厭的基目錄。將代碼從 開發服務器上的代碼遷移到活動網站的根目錄時,它也非常方便。

的RewriteCond%{REQUEST_URI}!([^ /] +)$因爲我們不希望使 任何現有的文件無法訪問,我們確保了URI(在這種情況下 URL的一部分在我們的基本目錄之後)沒有文件 擴展名。正則表達式更直接地檢查它是否「不包含一個句點,後面跟一個或多個不是週期或斜線的字符」。

的RewriteCond%{} REQUEST_FILENAME!-d這告訴重寫引擎不 重寫URL,如果它與 目錄標誌的服務器上匹配現有名稱(即,如果它是一個目錄)。

RewriteCond%{REQUEST_FILENAME}!-f這個同樣告訴它 不要重寫現有文件的名稱。

RewriteRule ^(。*)yourscript.php?yourargument = $ 1 [PT]最後,我們有 的實際重寫規則。由於我想要做的是將變量 傳遞給PHP腳本來加載內容,這是我的規則如何設置。這個 基本上匹配了我們之前設置的我們的 RewriteBase之後的任何數字或字符組合,並且將匹配在 括號內的片段傳遞到我們將我們的$編號變量放入我們的 重寫的URL中的任何位置。所以第一組圓括號爲1美元,第二組 組爲2美元,以此類推。最後,如果要將一個重寫規則的輸出 鏈接到下一個,請將[PT]標誌設置爲允許 用於通過重寫的URL。

一個重要的提示:在RewriteEngine敘述的工作方式是給予人類將如何閱讀代碼有點滑稽 ......它實際上測試 條件正則表達式中的重寫規則它測試的上述規定的條件的任何 前RewriteCond的規則。所以爲了 您的任何條件進行測試,整個事情首先要 找到一個有效的匹配來操作。

最後,要複製和粘貼的情況下,這裏的整個代碼 在一起,隨時可以噗的一聲落到.htaccess文件,並通過傳遞變量的腳本給你 擴展名的網址:

對於PHP

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase /yourdir 
RewriteCond %{REQUEST_URI} !(\.[^./]+)$ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*) yourscript.php?yourargument=$1 [PT] 
+0

謝謝。但是,這需要照顧PHP文件。那麼HTML文件和尾部斜槓怎麼樣?我試圖在我的代碼中包含所有三個。不只是PHP。 – phpnewbie2015

+0

嗯......實際上這並不關心任何事情。即使PHP文件也給出了相同的錯誤 – phpnewbie2015