こんにちは 私のプロジェクトでは、次の htaccess があります。たとえば、次の URL を入力します。domain.com/ test some test / test /
domain.com/test+some+test/test
期待通りになる
少なくとも私にとって奇妙なことは、編集domain.com/test+some+test/test
するときです
domain.com/test+some+test /test
もう一度Enterキーを押すと、次のようになります。
domain.com/test+some+test%20%20%20%20%20/test
それはまた逃げるべきではありませんか?何かが足りない場合は、指摘してください。
Options All -Indexes +FollowSymLinks -MultiViews
<IfModule mod_rewrite.c>
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# remove spaces from start or after /
RewriteRule ^(.*/|)[\s%20]+(.+)$ $1$2 [L]
# remove spaces from end or before /
RewriteRule ^(.+?)[\s%20]+(/.*|)$ $1$2 [L]
# replace spaces by + in between
RewriteRule ^([^\s%20]*)(?:\s|%20)+(.*)$ $1+$2 [L,R=301]
# Remove trailing slash
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [L,R=301]
# Add trailing slash
#RewriteCond %{REQUEST_URI} !(/$|\.)
#RewriteRule (.*) %{REQUEST_URI}/ [L,R=301]
# Remove multiple slashes
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]
# Clean url rewrite
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^.*\.(png|jpg|jpeg|bmp|gif|css|js|json)$ [NC]
RewriteRule ^(.*)$ /index.php?req=$1 [L,QSA]
</IfModule>
アップデート
さらに調査し、最初の 2 つの rewriterules に R スイッチを適用した後、Anubhava が示唆したように 1 つの問題のみが残っています。
入れたら こうhttp://tms.localhost/test+some+test /test
なるhttp://tms.localhost/test+some+test%20%20%20/test
んだけどこう入れたらやっぱりこうhttp://tms.localhost/test some test /test
なるhttp://tms.localhost/test+some+test/test