2011-10-14 27 views
0

我有以下RewriteMap指令功能:的.htaccess重寫URL - RewriteMap指令

RewriteMap map_company txt:/var/www/vhost/domain.com/httpdocs/map_company.txt 

我試圖重寫我的的index.php shop_id = 1/公司名稱/

?所以我map_company.txt文件包含:company-name 1

我似乎無法得到它的工作。這裏是我的htaccess文件:

如果我這樣做,那麼我的錯誤:文件不存在:/var/www/vhosts/domain.com/httpdocs/company-name

有沒有人有任何想法?我還需要確保它不會影響我的標準文件夾,如「css,js,images」。

回答

1

你已經打開重寫引擎?需要定義RewriteEngine on。此外,請檢查您是否具有此文件夾的必要AllowOverride值,以便讓您執行此操作。

順便說一句,我會考慮做最後的斜線可選:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?shop_id=${map_company:$1} [NC,L,QSA] 
+0

感謝您的幫助。是RewriteEngine開啓。我收到以下錯誤:沒有這樣的文件或目錄:mod_rewrite的:不能訪問文本文件RewriteMap指令/var/www/vhost/domain.com/httpdocs/map_company.txt - 該文件是存在的,雖然我aksed我的主人和他們說權限設置正確,所以他們不知道發生了什麼。那可能是什麼? – Drew

+0

目錄權限如何?它需要是可執行的(就像所有的父目錄一樣)。你有沒有試過將文件移動到別處? – megaflop

0

看起來像你不能在.htaccess文件聲明RewriteMap指令:

The RewriteMap directive may not be used in sections or .htaccess files. You must declare the map in server or virtualhost context. You may use the map, once created, in your RewriteRule and RewriteCond directives in those scopes. You just can't declare it in those scopes.

https://httpd.apache.org/docs/2.4/rewrite/rewritemap.html