重写子目录中的规则
Rewrite rule in subdirectory
重写规则不适用于子目录中的远程主机。
在生产阶段,我有这个目录 http://localhost/prj/
。我对没有扩展名的 "hide" 和 "load" PHP 文件使用了 RewriteRule。这是我用过的.htaccess
:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php
所以,效果很好,我已经开发了这个项目,我想将它上传到我的 VPS 以供远程使用等。问题是,该项目仍处于测试阶段,我没有将其保存在根目录 ATM 中,而是保存在子目录 /beta/ 中,所以现在,我的 URL 现在是这样的:http://example.com/beta/
.
然而,当我尝试访问 URL 时,index.php 会自动加载,但是当我以 http://example.com/beta/play
访问例如文件 play.php 时,它不会工作,但它在项目投入生产时有效。
这是我试过的:
- 使用 RewriteBase 到 /beta/
RewriteBase /beta/
- 使用不同的选项
Options All -Indexes -MultiViews
- 在实际 RewriteRule 之前使用目录
RewriteRule ^/beta/(.*)$ .php
- 使用特工
[L, QSA]
示例:
Options All -Indexes -MultiViews
RewriteEngine on
RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php [L,QSA]
Options All -Indexes -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/beta/(.*)$ .php [L,QSA]
返回的错误是 404 Not found。
编辑:我应该在里面 apache2.conf?
在 /beta/.htaccess
试试这个:
Options All -Indexes -MultiViews
RewriteEngine on
RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/beta/\.php -f [NC]
RewriteRule ^(.+?)/?$ .php [L]
重写规则不适用于子目录中的远程主机。
在生产阶段,我有这个目录 http://localhost/prj/
。我对没有扩展名的 "hide" 和 "load" PHP 文件使用了 RewriteRule。这是我用过的.htaccess
:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php
所以,效果很好,我已经开发了这个项目,我想将它上传到我的 VPS 以供远程使用等。问题是,该项目仍处于测试阶段,我没有将其保存在根目录 ATM 中,而是保存在子目录 /beta/ 中,所以现在,我的 URL 现在是这样的:http://example.com/beta/
.
然而,当我尝试访问 URL 时,index.php 会自动加载,但是当我以 http://example.com/beta/play
访问例如文件 play.php 时,它不会工作,但它在项目投入生产时有效。
这是我试过的:
- 使用 RewriteBase 到 /beta/
RewriteBase /beta/
- 使用不同的选项
Options All -Indexes -MultiViews
- 在实际 RewriteRule 之前使用目录
RewriteRule ^/beta/(.*)$ .php
- 使用特工
[L, QSA]
示例:
Options All -Indexes -MultiViews
RewriteEngine on
RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ .php [L,QSA]
Options All -Indexes -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/beta/(.*)$ .php [L,QSA]
返回的错误是 404 Not found。
编辑:我应该在里面 apache2.conf?
在 /beta/.htaccess
试试这个:
Options All -Indexes -MultiViews
RewriteEngine on
RewriteBase /beta/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/beta/\.php -f [NC]
RewriteRule ^(.+?)/?$ .php [L]