我有一个 php 应用程序,用于放置:
~/public_html/beta/
以及 mantis 和 phpmyadmin 中的:
~/public_html/mantis/
~/public_html/phpmyadmin/
该应用程序曾经被这样访问:
www.mysite.com/beta/
其他的如下:
www.mysite.com/mantis
www.mysite.com/phpmyadmin
我们必须对我们的应用程序进行某些更改,并且需要将应用程序从 /beta/ 转移到 / (即文档根目录)。
我不太愿意将 mantis、phpmyadmin 作为 public_html 中的子文件夹 - 我担心它们可能会被我/其他管理员意外删除/篡改。
我如何设置我的 httpd.conf 以便可以继续以以下方式访问我的 mantis 和 phpmyadmin:
www.mysite.com/mantis
www.mysite.com/phpmyadmin
并将“申请”保存在:
www.mysite.com
?
我当前的 httpd.conf 内容如下:
<VirtualHost IPADDRESS:80>
ServerAlias MYSITE.com
DocumentRoot /var/www/html
ServerName MYSITE.com
UseCanonicalName On
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
...
答案1
您需要将它们保存在主域下的文件夹中,还是可以将它们放在子域中?
您可以将应用程序、mantis 和 phpmyadmin 放在单独的文件夹中,为每个文件夹设置 3 个虚拟域,例如:
<VirtualHost *:80>
ServerName MYSITE.com
ServerAlias www.MYSITE.com
DocumentRoot /var/www/html/public_html
#etc
<VirtualHost *:80>
ServerName phpmyadmin.MYSITE.com
DocumentRoot /var/www/html/phpmyadmin
#etc
<VirtualHost *:80>
ServerName mantis.MYSITE.com
DocumentRoot /var/www/html/mantis
#etc
因此应用程序直接进入public_html,phpmyadmin进入/var/www/html/phpmyadmin,mantis进入/var/www/html/mantis。
然后只需设置附加 DNS 并使用以下地址访问网站:www.mysite.com phpmyadmin.mysite.com mantis.mysite.com
答案2
你应该能够在 .htaccess 中执行重写规则,类似于 RewriteEngine
RewriteBase /
RewriteRule ^(?!mantis)(?!phpmyadmin)(.*)$ beta/$1 [L]
(除非它在 ether mantis 或 phpmyadmin 中启动,否则这会将每个请求重定向到 /beta/ 子文件夹,而且它是从内存中完成的,所以如果您收到语法错误,那只是我对正则表达式的无能)