重写规则在子目录中的远程主机上不起作用。
在生产阶段,我有这个目录http://localhost/prj/
。我用RewriteRule来"隐藏"和#34;加载"没有扩展名的PHP文件。这是我用过的.htaccess
:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
所以,这很好,我已经开发了这个项目,我想将它上传到我的VPS以供远程使用等。问题是,该项目仍处于测试阶段,我不会将其保留在根目录ATM中,但是在子目录/ beta /中,所以现在,我的URL现在是这样的:http://example.com/beta/
。
然而,当我尝试访问该URL时,index.php会自动加载,但当我访问例如文件play.php为http://example.com/beta/play
时,它无法正常工作,但是当项目是在生产中。
这就是我的尝试:
RewriteBase /beta/
Options All -Indexes -MultiViews
RewriteRule ^/beta/(.*)$ $1.php
[L, QSA]
示例:
Options All -Indexes -MultiViews
RewriteEngine on
RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L,QSA]
Options All -Indexes -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/beta/(.*)$ $1.php [L,QSA]
返回错误是404未找到。
编辑:我本来应该在apache2.conf里面吗?
答案 0 :(得分:1)
在/beta/.htaccess
:
Options All -Indexes -MultiViews
RewriteEngine on
RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/beta/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]