我在客户端网站上设置了这个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不起作用。有谁知道我需要做些什么来使这项工作?
答案 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;托管,我们不使用即将到期。所以我已经登录并自己测试了这些规则。让它直接工作。这是我的设置:
.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)