1

如果没有斜杠,我拥有的重写 url 不会重定向。我想将去这里的用户重定向http://example.com/po到这里:http://new.example.com/po/index_mi.php

我尝试了这些行,但没有一个行得通:

RewriteRule  /po(/)?$ http://new.example.com/po/index_mat.php [R=301,L]
RewriteRule ^/po(/)$ http://new.example.com/po/index_mat.php [R=301,L]
RewriteRule ^/po$ http://new.example.com/po/index_mat.php [R=301,L]

这是完整的虚拟主机:

<VirtualHost 192.228.100.142:80>
ServerAdmin serveradmin@example.com
DocumentRoot /home/drupal_1
ServerName example.com
ServerAlias www.example.com 
Alias /movies /home/movies/
ErrorLog /var/log/httpd/example.com_err_log
  CustomLog /var/log/httpd/example.com_log special
<Directory /home/drupal_1>
  Options FollowSymLinks Includes ExecCGI
          AllowOverride All
          DirectoryIndex index.html index.htm index.php
</Directory>

# Rewrite Rules #####################
RewriteEngine On
RewriteRule ^/webmedia/(.*) / [R=301,L]
RewriteRule ^/marquee.php / [R=301,L]
RewriteRule ^/register /user/register [R=301,L]
RewriteRule  ^/po(/)?$ http://new.example.com/po/index_mat.php [R=301,L]
# end Rewrite Rules #################

</VirtualHost>

更新:

我让它与这条线一起工作:

RewriteRule ^/po$ http://new.example.com/po/index_mat.php [R=301,L]
4

2 回答 2

4

尝试:

RewriteOptions AllowNoSlash

mod_rewrite 文档

AllowNoSlash

默认情况下,mod_rewrite 将忽略映射到磁盘上的目录但缺少尾部斜杠的 URL,期望 mod_dir 模块将向客户端发出重定向到带有尾部斜杠的规范 URL。

DirectorySlash指令设置为off时,可以启用该AllowNoSlash 选项以确保不再忽略重写规则。如果需要,此选项可以在 .htaccess与目录匹配的文件中应用重写规则而没有尾部斜杠。

在 Apache HTTP Server 2.4.0 及更高版本中可用。

于 2012-05-06T05:54:31.150 回答
1
RewriteRule ^/po$ http://new.example.com/po/index_mat.php [R=301,L]

看来您必须重新启动 Apache 或至少进行优雅的重新启动才能生效。

于 2012-05-07T18:33:53.093 回答