当我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/都可以正常工作。
例:
sudo vi /etc/apache2/apache2.conf Alias /myalias1 "/path/to/folder1"
总结以上是内存溢出为你收集整理的尾随斜杠问题全部内容,希望文章能够帮你解决尾随斜杠问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)