2016-09-06 35 views
1

我創建了一個網站上我的本地主機, 裏面的htdocs我添加了一個文件夾「網站名稱」這包含其中的.htaccess所有文件。這在我的本地工作正常,但是當我在服務器上上傳它不工作。的.htaccess重寫規則不工作的cPanel

的.htaccess代碼

Options +FollowSymlinks 
RewriteEngine on 

RewriteBase /sitename/ 

# redirect to .php-less link if requested directly 
#RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
#RewriteRule^/sitename/%1 [R,L,NC] 

ErrorDocument 404 /sitename/404 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/sitename/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

應該用什麼替代 '網站名稱',而上載的cPanel 的public_html?

+0

「應該用什麼替代‘網站名稱’...」 - 刪除'/ sitename'的所有實例,如果該網站是在文檔根主持,而不是子目錄。另外:你應該爲你的開發服務器上創建的每個站點創建單獨的VirtualHosts,然後上傳到您的實際網站時,你就不需要做任何改變。 – MrWhite

回答

1

如果你把你的腳本中的子文件夾(例如:/public_html/sitename/比下面要爲你工作)。但是,如果你直接在/public_html/(例如:/public_html/index.php)讓你的腳本比RewriteBase /

Options +FollowSymlinks 

<IfModule mod_rewrite.c> 
    # let the PHP knows that the mod_rewrite module is ENABLED. 
    SetEnv HTTP_MOD_REWRITE On 
    RewriteEngine on 
     RewriteBase /sitename/  
</IfModule> 

#prevent direct access to certain file types 
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak|psd|DS_Store|project)$"> 
    Order Allow,Deny 
    Deny from all 
</FilesMatch> 

ErrorDocument 404 /sitename/404.php 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/sitename/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

更換RewriteBase /sitename/讓你得到任何錯誤消息我們知道 - 這將幫助。

+1

我會嘗試這一點,並讓你知道我的 –

+0

文件夾結構是這樣的/public_html/index.php –

+0

在這種情況下,只需更換/網站名稱/與/ ......我測試過它在我的網絡服務器和它的工作。 – salih0vicX