.htaccess 的空格/空格字符


Blank Space / Whitespace Character for .htaccess

这个规则对我有用,但我有一个问题www.domain.com/description_functionhall/117/A%2520S%2520Garden第二条规则是采用 %2520,所以我想要这种格式的 URLwww.domain.com/description_functionhall/117/A-S-Garden

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /function_hall_project/
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
## hide .php extension snippet

RewriteCond %{THE_REQUEST} ^GET's([^.]+)'.php'?hall_id=([^&'s]+)&booking_date=([^&'s]+)&session=([^&'s]+) [NC]
RewriteRule ^ %1/%2/%3/%4? [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/([^/]+)/([^/]+)/([^/]+)/?$ $1.php?hall_id=$2&booking_date=$3&session=$4 [L,QSA]
# To externally redirect /dir/foo.php?hall_id=123&name=abcd to /dir/foo/123/abcd
RewriteCond %{THE_REQUEST} ^GET's([^.]+)'.php'?hall_id=([^&'s]+)&name=([^&'s]+) [NC]
RewriteRule ^ %1/%2/%3? [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/([^/]+)/([^/]+)/?$ $1.php?hall_id=$2&name=$3 [L,QSA]
# To externally redirect /dir/foo.php?id=123 to /dir/foo
RewriteCond %{THE_REQUEST} ^GET's([^.]+)'.php'?hall_id=([^&'s]+) [NC]
RewriteRule ^ %1/%2/? [R,L]
# To internally forward /dir/foo/12 to /dir/foo.php?id=12
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/([^/]+)/?$ $1.php?hall_id=$2 [L,QSA]

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^GET's([^.]+)'.php's [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*?)/?$ $1.php [L]

您可以在## hide .php extension snippet行下方插入此规则,将所有这些空格转换为 hyhen:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s/+(.*?)(?:'+|%2520|%20|'s)+(.+?)'sHTTP [NC]
RewriteRule ^ /%1-%2 [L,NE,R=302]