2

我希望我的 URL 添加尾部斜杠,但前提是 URL 不以锚结尾。

这是我当前的 .htaccess 文件

# ----------------------------------------------------------------------
# Enable Rewrite Engine
# ----------------------------------------------------------------------

RewriteEngine On
RewriteBase /


# ----------------------------------------------------------------------
# Remove the www from the URL
# ----------------------------------------------------------------------

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]


# ----------------------------------------------------------------------
# Add a trailing slash to paths without an extension
# ----------------------------------------------------------------------

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule ^(.*)$ $1/ [L,R=301]


# ----------------------------------------------------------------------
# Remove index.php
# ----------------------------------------------------------------------

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L] 


当我链接到锚定部分时,URL 会被写入:

http://mysite.com/subdir/#anchor


当它们看起来像这样时:

http://mysite.com/subdir#anchor


常规 URL 应如下所示:

http://mysite.com/directory/sub/



我很困惑,所以任何帮助都会很棒!

干杯,

4

2 回答 2

3

你看过 Apache 的Directory Slash设置吗?

这是我们在 .htaccess 中用来处理类似问题的方法

DirectorySlash Off
DirectoryIndex index.php index.html index.htm
于 2012-06-20T21:19:25.473 回答
3

不要认为问题在于您的重写规则。片段(#somethingURI 的末尾)永远不会被发送到服务器,它们被用作浏览器呈现的页面内的从属资源。

确保您提供的 HTML 中的锚点中不包含斜杠,或者您没有将它们附加到浏览器端的 javascript。


编辑:

好吧,如果要删除 URI 末尾添加的斜杠,您可能需要注释掉这条规则:

# ----------------------------------------------------------------------
# Add a trailing slash to paths without an extension
# ----------------------------------------------------------------------

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule ^(.*)$ $1/ [L,R=301]
于 2012-06-20T20:43:44.127 回答