我想知道这段代码有什么问题,因为它上次在服务器和localhost中运行良好。但现在它在服务器上根本不起作用..
以下是我的代码:
RewriteEngine on
RewriteBase /mydomain/
# Return 404 if original request is /mydomain/index.php
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^ - [L,R=404]
# Rewrite /mydomain/index to /mydomain/index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^./]+)/?$ $1.php [L]
我的域名是mydomain.com,localhost文件夹是mydomain。它适用于localhost,但不适用于服务器。发生了什么事?
答案 0 :(得分:0)
你的.htaccess中有RewriteBase
行:
RewriteBase /mydomain/
如果您在实时服务器上没有mydomain
文件夹:
RewriteBase /
RewriteBase
表示DocumentRoot
的.htaccess当前目录的相对路径。
完整.htaccess:
RewriteEngine on
RewriteBase /
# Return 404 if original request is /mydomain/index.php
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^ - [L,R=404]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]
答案 1 :(得分:0)
更改httpd.conf
文件(linux服务器:/etc/httpd/conf/httpd.conf)
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
如果设置AllowOverride None
,则不会反映您在.htaccess文件中所做的更改