htaccess重写和1& 1

时间:2011-07-07 12:24:02

标签: .htaccess

我正在将网站安装到1&1提供的托管上。似乎1&1对htaccess文件的运行方式有各种怪癖和问题。

事情没有正常工作,我已经将文件剥离到最低限度,试图找到问题的基础。

这是我的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没有!

规则是相同的,唯一的区别是第一个子类别。 服务器称为“页面”或“列表”的“真实”文件夹可能不会引起冲突。

似乎只使用名为“pages”的子文件夹才能正常工作 - 这不仅仅是'listing'的问题,因为任何其他子文件夹名称都不会被选中。

有什么可能导致这种情况?

3 个答案:

答案 0 :(得分: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. 我已经更改了规则顺序 - 以防万一,虽然没关系

答案 1 :(得分:0)

在这两种情况下,您的RegExp都是错误的。 1& 1地图靠近匹配,因此pages/example映射到page.phppage1.php映射到page.php

我猜正确的规则是

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

答案 2 :(得分:-1)

在使用php {x}}或https://github.com/bcosca/fatfree

等php微框架时,我在.htaccess文件中使用了以下选项
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]