.htaccess将尾随闪存添加到URL中,其中包含句点

问题描述 投票:0回答:2

我试图让apache重定向每个URL以在末尾添加一个尾部斜杠。我遇到以下类型的URL问题。

Z zxswゔぃd。垂直

由于某种原因,我所拥有的规则不会在此类URL的末尾添加尾部斜杠。我需要将斜杠添加到最后。

我搜索了stackoverflow的一些答案,但我找不到任何可以帮助的东西。我不是URL重写的专家。

这是我现在的规则。

http://mywebsite.com/profile/

你能否告诉我如何写上面的URL,最后有一个斜杠?

谢谢

php regex apache .htaccess
2个回答
1
投票

我假设您只想将请求重定向到路径最后部分有句点的URL?也许只有它类似于旧的“文件扩展名”之类的东西,用文件的基本名称分隔一段时间。那么在某个时期之前会出现一些事情并且实际上是在“文件名”中的某个时期之后呢?

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

你需要注意的是,没有其他规则可以在某处删除那个尾随斜杠,这通常是在框架之类的情况下使URL保持漂亮......

一旦确定所有内容都已正确设置,最好先使用302临时重定向,然后再将其更改为301永久重定向。这可以防止在尝试时出现缓存问题......

此规则同样适用于http服务器主机配置或动态配置文件(“.htaccess”文件)内部。显然,重写模块需要加载到http服务器内并在http主机中启用。如果您使用动态配置文件,则需要注意在主机配置中完全启用它的解释,并且它位于主机的RewriteEngine on RewriteRule [^/]+\.[^/]+$ %{REQUEST_URI}/ [R=301] 文件夹中。

一般说法:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,它们确实会降低http服务器的速度。它们仅作为最后一个选项提供给您无法访问真正的http服务器主机配置(读取:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)。


1
投票

您可以使用此规则向除现有文件之外的所有URL添加尾部斜杠:

DOCUMENT_ROOT
© www.soinside.com 2019 - 2024. All rights reserved.