我的.htaccess
里面有以下代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ 404.php [L]
这样做的目的是
从网址
.php
扩展名
重写网址,以便在斜杠后显示POST
数据,即如果原始网址为website.com/sheet?username=bob
,则会将其重写为website.com/sheet/bob
当找不到给定的特定网址时,重定向到自定义404页面
此代码在通过WAMP进行本地开发时表现良好,我可以根据<user>
的{{1}}值查看不同的信息。
当我将更改上传到实际网站时,代码不再有效,并将website.com/sheet/<user>
显示为我的自定义404页面。
我的website.com/sheet/bob
错了吗?对不起,我对.htaccess
非常缺乏经验。
修改如果我删除.htaccess
,如果我尝试转到.htaccess
,则会收到以下错误:
website.com/sheet.php
但不会在我的文档根目录中生成Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@website.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
文件,因此我不确定如何查看问题:s
由于
答案 0 :(得分:0)
问题似乎与.htaccess
。
最初:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ 404.php [L]
现在:
ErrorDocument 404 /404.php
Options -Indexes -MultiViews
RewriteEngine on
RewriteCond %{THE_REQUEST} \.php [NC]
RewriteRule ^(?!404\.php)$ - [L,NC,R=404]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/?(.*)$ ./$1.php [L]
我对.htaccess
文件不是很擅长,所以我不能告诉你确切的问题是什么,但这种改变似乎完成了我的目标,而没有给出任何错误。