2010-01-17 55 views
1

我試圖創建一個重寫規則到一個不同的目錄,但不幸的是它不工作。mod_rewrite到一個目錄

我的當前重寫將所有內容都發送回index.php文件,除非查詢字符串中的第一個單詞是admin。 'admin'的重寫規則是給admin.php,但我實際上希望它到/var/www/html/website.com/admin/admin.php(而不是同一目錄中的文件)。

這是當前的.htaccess文件。

RewriteEngine On 
RewriteRule ^(.*\/?).*(css|images|js/)+.*$ - [L] 
RewriteRule ^\/?admin\/?(.*)$ admin.php?url=$1 [QSA,L] 

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

如果我更改管理員可以使用不同的目錄重寫規則..

RewriteRule ^\/?admin\/?(.*)$ /var/www/html/website.com/admin/admin.php?url=$1 [QSA,L] 

它打破了該網站。有任何想法嗎?

謝謝。

回答

0

其實很簡單,你使用系統路徑,而需要web路徑。

嘗試以下行:

RewriteRule ^\/?admin\/?(.*)$ /subfolder/admin.php?url=$1 [QSA,L] 
+0

我的目錄坐在網絡路徑的下方。網絡路徑是/var/www/html/website.com/web/,而試圖訪問的路徑是/var/www/html/website.com/admin/web/ – Bennn 2010-01-17 00:46:11

+0

嗯,你不能。唯一的方法是創建另一個可通過網絡訪問的文件,幷包含不可訪問的文件。像這樣[website.com/web/admin.php]:<?php require_once('../admin/web/admin.php'); – 2010-01-17 00:50:06

+0

感謝您的幫助。我只是建立了一個到目錄的符號鏈接,並在那裏添加了一個mod_rewrite並且工作。 – Bennn 2010-01-17 01:10:04

0

嘗試下列規則:

RewriteRule ^admin($|/(.*)) admin/admin.php?url=$2 [QSA,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php?url=$0 [QSA,L]