微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尾随斜杠问题

当我input这个“ http://example.com/Hello%20There/ ”时,它显示的索引页面是:“ http://example.com/Hello%20There/index.html ”。

那么,我想要做的是当用户键入“ http://example.com/Hello%20There ”(所以像第一个,除了没有结尾的斜线)。

我尝试了很多东西,特别是正则expression式,但没有任何效果,因为我认为服务器在find空格(URL中的“%20”)时会停止reg exp过程。

我试过这个reg exp:

htaccess不重写我的GET请求的url

mod_rewrite:允许redirect但阻止直接访问

Codeigniter htaccess删除index.PHP和www

Apaches mod_rewrite VS. PHP路由?

htaccess 301redirect与查询

Options +FollowSymLinks rewriteEngine On rewriteCond %{REQUEST_URI} ^(.*) (.*html)$ rewriteRule ^.*$ %1-%2 [E=space_replacer:%1-%2] rewriteCond %{ENV:space_replacer}!^$ rewriteCond %{ENV:space_replacer}!^.* .*$ rewriteRule ^.*$ %{ENV:space_replacer} [R=301,L]

并且还提出:

DirectorySlash On

在Apache的“mod_dir”模块中。

所以,我的问题是: – 如何告诉服务器,当用户键入一个url没有结尾的斜杠时添加一个尾部的斜线; $

Apacheredirect问题.htaccess中

mod_rewrite – PHP:$ _GET不完整

GET mod_rewrite之后的variables

更改Cookie域

mod_rewrite和图像redirect

您可以通过添加? 量词如下:

RewriteRule ^([^/]+)/?$ $1/index.html

现在/foobar和/foobar/将被重写为/foobar/index.html 。

但是,如果只使用一个拼写(无论是否使用斜线)并重定向一个拼写,则会更好:

# remove trailing slash RewriteRule (.+)/$ /$1 [L,R=301] # add trailing slash RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .*[^/]$ /$1/ [L,R=301]

这些规则要么删除添加一个缺少的尾部斜线,并做一个永久的重定向

我有同样的问题,但我使用mod_alias建立一个子网站。 事实证明,我需要做第二个别名没有结尾斜杠,以便它能正常工作。 看起来像这样:

Alias /forum/ "/var/www/forum" Alias /forum "/var/www/forum" <Directory "/var/www/forum"> Options FollowSymlinks AllowOverride None Order allow,deny Allow from all </Directory>

在Ubuntu中,我必须用这些行编辑/etc/apache2/mods-enabled/alias.conf文件,然后重新启动apache。 在网络上的任何地方找不到这个答案; 我只是偶然发现,因为mod_rewrite不工作,DirectorySlash命令也没有帮助。 我在一个Drupal安装下追加了一个非Drupal程序作为子网站,这就是所有这些疯狂的开始…

不要使用尾部斜线来定义别名。

这两个网址http://example.com/myalias1和http://example.com/myalias1/都可以正常工作&#x3002;

例:

sudo vi /etc/apache2/apache2.conf Alias /myalias1 "/path/to/folder1"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐