Godaddy:用.htaccess重写

mcg*_*ilm 1 .htaccess mod-rewrite

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

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

它在我的MAMP上工作正常,但似乎不能在服务器上运行

他们建立像demo.example.com一个子域和htaccess的demo文件夹中存在,但我得到404好一会页面像demo.example.com/test但demo.example.com/test.php工作正常,所以这告诉我htaccess不起作用.有谁知道我需要做些什么来使这项工作?

Laz*_*One 5

尝试:

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

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

PS有一些"谣言"说GoDaddy可能不会立即获取.htaccess文件的变化.

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

ErrorDocument 404 /404.php

404.php(就像这个一样简单)

<?php
Echo "404\n";
phpinfo(INFO_VARIABLES);
Run Code Online (Sandbox Code Playgroud)

那里的细节可能有助于确定问题.

更新:

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

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

.htaccess 已经存在并且只有一条线9可能从原来的网站遗留下来:

addhandler x-httpd-php5 .phtml
Run Code Online (Sandbox Code Playgroud)

这些行被添加到.htaccess:

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

我创建了简单的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/

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