Godaddy:用.htaccess重写

时间:2011-06-20 17:30:18

标签: .htaccess mod-rewrite

我在客户端网站上设置了这个htaccess,他们使用的是godaddy

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

它在我的MAMP上运行良好,但似乎无法在服务器上运行

他们已经设置了像demo.example.com这样的子域名,而htaccess存在于demo文件夹中,但是我得到404试图访问demo.example.com/test这样的页面,但demo.example.com/test.php有效好,所以这告诉我htaccess不起作用。有谁知道我需要做些什么来使这项工作?

3 个答案:

答案 0 :(得分:5)

尝试:

1)将此行添加到.htaccess:Options +FollowSymlinks

2)在$1之前添加前导斜杠,例如RewriteRule ^(.*)$ /$1.php [L,QSA]

P.S。有一些“谣言”说GoDaddy可能不会立即获取.htaccess文件中的更改。

我还建议定义自定义404错误处理程序(简单的PHP脚本),这可能有助于调试它(将此行放入.htaccess):

ErrorDocument 404 /404.php

404.php (这很简单)

<?php
Echo "404\n";
phpinfo(INFO_VARIABLES);

的详细信息可能有助于确定问题。

<强>更新

我们有一个域名&amp;托管,我们不使用即将到期。所以我已经登录并自己测试了这些规则。让它直接工作。这是我的设置:

  • 的Apache / 1.3.33
  • 主机配置:2.1
  • PHP 5.x(不打算检查确切的版本)
  • 数据中心:美国地区

.htaccess已经存在且只有1行9可能会遗留在最初的网站上:

addhandler x-httpd-php5 .phtml

这些行被添加到.htaccess:

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

我创建了简单的php文件来检查它是否有效。称之为echo.php。然后我尝试了这些网址:

  • http://www.example.com/abcd - 看到了错误页面(正如预期的那样)
  • http://www.example.com/echo - 看到我的页面 - echo.php(如预期的那样)

echo.php的完整物理路径是:/home/content/b/u/y/buyxxxxxxx/html/echo.php; ftp / website root是/home/content/b/u/y/buyxxxxxxx/html/

尝试这个简单的设置。在解决这个问题之前,不要做任何复杂的事情。

答案 1 :(得分:3)

这是在godaddy上播放.htaccess的正确方法

Options +FollowSymLinks -MultiViews -Indexes

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}\.php -f

RewriteRule ^(.*)$ /$1.php [L,QSA]

答案 2 :(得分:2)

This answer on Stack Overflow也可以帮助你:

添加:

Options +FollowSymLinks -MultiViews -Indexes

在最顶端并试一试。