将特定URL请求委派给特定目录

时间:2014-12-08 10:50:01

标签: apache .htaccess mod-rewrite

从我的上一期提出的问题,即Mapping domains to Tomcat Apps。现在我想要一个特殊的请求,即

http://www.app1.com/blog

然后将重定向到我服务器上的特定文件夹。我确实试过下面的代码

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/blog/ /path_to_my_site/app1_com/blog/ [L]

但是这已经变得非常错误,因为它已成为重定向循环,所以我立即将其删除。

注意:我的网站www.app1.com正在托管java应用程序,www.app1.com / blog将是php应用程序博客。

更新1

为了清楚起见,下面是我的虚拟主机配置

<virtualhost *:80>
ServerName app1.com
ServerAlias app1.com www.app1.com


Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blog(/.*)?$ /path_to_my_site/blog/ [L,NC]

ProxyPass / ajp://127.0.0.1:8009/app1/
ProxyPassReverse / ajp://127.0.0.1:8009/app1/

</virtualhost>

更新2

博客文件夹中.htaccess的内容是

# Pretty Permalinks
RewriteRule ^(images)($|/) - [L]
RewriteCond %{REQUEST_URI} !^action=logout [NC]
RewriteCond %{REQUEST_URI} !^action=login [NC]
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /blog/
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?filename=$1 [NC,QSA,L]

1 个答案:

答案 0 :(得分:0)

您可以使用:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blog(/.*)?$ /path_to_my_site/app1_com/blog/ [L,NC]

/path_to_my_site/app1_com/blog/应该是DocumentRoot下的有效路径。

将您的ProxyPass行更改为:

ProxyPass /blog !
ProxyPassMatch ^/(?!blog).*$ ajp://127.0.0.1:8009/app1/
ProxyPassReverse / ajp://127.0.0.1:8009/app1/