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 に答える