我在根文件夹中有实时网站,现在我已经创建了一个子目录来保持开发更改并在服务器上测试它们,如何为子目录配置htaccess,我想让实时网站保持运行。
目前我的htaccess如下,类似于root htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(member-([0-9]+)-([a-zA-Z0-9\-]+))/?$ team.php?id=$2&%{QUERY_STRING} [NC,L]
请帮帮我
修改:我想通过在网址末尾添加/ beta来访问测试版网站。前https://www.example.com/beta
答案 0 :(得分:0)
.htaccess
个文件您可能只需在子目录中创建相同的.htaccess
并删除RewriteBase
命令就可以了 - 在大多数情况下它确实不需要,除非重写文档根目录上的文件路径,正确配置可能会让人感到困惑。
以下是一个示例设置:
+- DOCROOT/index.php :
<?php echo $_SERVER['PATH_INFO'];
+- DOCROOT/.htaccess :
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php/$1
+- DOCROOT/subdir/index.php :
<?php echo $_SERVER['PATH_INFO'];
+- DOCROOT/.htaccess :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php/$1
通过该设置,您可以致电http://server/some-path
并看到/some-path
回传,或致电http://server/subdir/other-path
并看到/other-path
回复。
.htaccess
您还可以在文档根目录中的主.htaccess
文件中添加子目录的重写规则 - 只需复制最后一个重写链(唯一有趣的一个)并添加{{ 1}}到第一个仅限于子目录的那个。
以上面的例子为例,它可能如下所示:
RewriteCond
(我还使用了libery来删除冗余的RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteBase /
RewriteCond %{REQUEST_URI} subdirectory/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^subdirectory/(member-([0-9]+)-([a-zA-Z0-9\-]+))/?$ subdirectory/team.php?id=$2&%{QUERY_STRING} [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(member-([0-9]+)-([a-zA-Z0-9\-]+))/?$ team.php?id=$2&%{QUERY_STRING} [NC,L]
命令)。如果请求到达子目录,它将被第一个规则捕获,使用子目录上下文重写,RewriteEngine On
标志将导致mod_rewrite停止处理。否则它将执行主路由。这个设置有点过于复杂,我可能会使用额外的.htaccess文件。