我在创建重写规则时遇到问题。
我们已经安装了Wordpress,并且需要同时处理静态和动态内容。
假设我们在/ support的wordpress中有一个页面,它是论坛,文档等的登录页面。
我们的文档是在wordpress之外生成的,我们希望可以从/ support / documentation中获得它。
我们将如何处理?我尝试了一些选择,最接近将文档添加到单独文件夹中的选项:
RewriteRule ^support/documentation(/.*)?$ /support-4-0/Documentation$1 [NC,L]
这里的问题是Apache仍然提供support-4-0文件夹,从而导致内容重复的问题。有没有更好的方法可以解决这个问题?
答案 0 :(得分:1)
如果将support-4-0
文件夹存储在站点的DocumentRoot
文件夹之外的其他位置没有问题,则可以使用Alias
功能。
Alias伪指令用于在URL和文件系统路径之间进行映射。这样就可以将不直接位于DocumentRoot下的内容用作Web文档树的一部分。
<VirtualHost *:80>
DocumentRoot /var/www/domain.com/public_html
# ...
Alias /support/documentation /var/www/domain.com/support-4-0
<Directory /var/www/domain.com/documentation>
Options MultiViews Indexes Includes FollowSymLinks ExecCGI
AllowOverride All
Require all granted
allow from all
</Directory>
# ...
</VirtualHost>
别名语法:
Alias "Map-This-URI" "To-This-System-Path"
您需要指定其他部分来覆盖别名的目的地。这是示例目录配置:
<Directory "Specified-System-Path">
Options MultiViews Indexes Includes FollowSymLinks ExecCGI
AllowOverride All
Require all granted
allow from all
</Directory>
PS:以上配置的参考目录树:
/
└─ var
└─ www
└─ domain.com
├─ public_html
└─ support-4-0
答案 1 :(得分:0)
如果要停止用户访问support-4-0
,可以将用户从该页面重定向到从support
开始的新支持页面。
您可以在下面使用
RewriteRule ^support-4-0/(.*) http://websitename/support/$1 [R]
答案 2 :(得分:0)
确保已安装apache mod_rewrite模块。然后,在您的apache配置,虚拟主机配置或(不太理想的).htaccess文件中使用类似的内容:
RewriteEngine On
RewriteRule ^/(.*)$ /pages/$1