2011-07-07 28 views
1

我正在安裝一個網站到由1&1提供的託管。看起來1&1有多種怪癖和htaccess文件如何運行的問題。htaccess重寫和1&1

事情工作不正常,我已經把文件剝離到最低限度,試圖找到問題的根本。

這裏是我的htaccess文件:

AddType x-mapp-php5 .php 

RewriteEngine On 
RewriteBase/

RewriteRule ^pages/([a-zA-Z]*)/?$ page.php [NC] 
RewriteRule ^listings/([a-zA-Z]*)/?$ page.php [NC] 

現在奇怪的事情:

http://www.essenceseeker.com/pages/example工作

http://www.essenceseeker.com/listings/example不!

規則是相同的,唯一的區別是第一個子類別。 服務器沒有'真正的'文件夾被稱爲'網頁'或'列表',這可能會導致衝突。

似乎只使用名爲「網頁」的子文件夾將起作用 - 這不僅僅是「列表」的問題,因爲任何其他子文件夾名稱都不會被拾取。

有什麼可能導致這種情況?

回答

1

試試這個:

AddType x-mapp-php5 .php 

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

RewriteRule ^listings/([a-z]*)/?$ /page.php [NC,QSA,L] 
RewriteRule ^pages/([a-z]*)/?$ /page.php [NC,QSA,L] 
  1. 這需要被放置在.htaccess文件在網站根目錄。

  2. 如果您不打算在重寫規則中使用該部分,則不需要括號()

  3. 我已經加入QSA標誌保留任何可能的參數(查詢字符串) - 像轉診,追蹤ID等

  4. 我還添加L標誌停止重寫,如果發生重寫。

  5. 我已經改變了規則的順序 - 爲了以防萬一,但它不應該的問題

+0

謝謝 - 這是加入 選項+的FollowSymLinks -MultiViews 行做到了 - 不知道那些運我會研究他們做了什麼差異! 謝謝 – Nick

0

在這兩種情況下,您的RegExp都是錯誤的。 1 & 1 map near matches,所以pages/example映射到page.php,因爲是page1.phppage.php

我想正確的規則將

RewriteRule ^pages/[a-zA-Z]*$ page.php [NC] 
-1

我用下面的選項在我的.htaccess文件用PHP微框架,如https://github.com/bcosca/fatfreehttp://flightphp.com/install工作時

Options +FollowSymLinks -MultiViews 

AddType x-mapp-php6 .php 
AddHandler x-mapp-php6 .php 

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [QSA,L]