带有大写和斜杠的URL正在运行,但没有斜杠的大写不起作用。但是,无论有没有斜杠,小写都没有问题。所有内容都需要重定向到www.domain.com/Name - Do not work
www.domain.com/Name/ - Works
www.domain.com/name - works
www.domain.com/name/ - works
前:
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ /${lowercase:$1}
RewriteCond %{QUERY_STRING} ^(.*)StringName=(.*)$
RewriteRule ^/home(.*)$ /%2/? [R=301,NC,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R=301,NC]
RewriteRule ^/(.*)/$ /$1/homepage.html [PT,L]
以下是我应用的重写规则/条件。
launch () {
git add -A .
git commit -m "$1"
git push heroku master
echo "$1"
}
答案 0 :(得分:1)
重定向“/ name”并且“/ Name”不重定的原因可能是由于Apache的mod_dir重定向/名称为/ name /,因为“/ var / www / html / name /”是一个实际的目录,而/ var / www / html / Name /则不是。
Apache看到你可能正在尝试访问/命名/即使你指定了/ name。但是,由于/ Name /不是目录,因此mod_dir不会为您更正它。
这可以使用以下规则解决:
RewriteCond %{REQUEST_URI} ^/Name(/?)$ [NC]
RewriteRule (.*) http://example.com/name/homepage.html
如果您还想捕获以下请求:
http://example.com/Name/something.html
并将其重定向到:
http://example.com/name/something.html
您可以改用:
RewriteCond %{REQUEST_URI} ^/Name(.*)$ [NC]
RewriteRule ^/Name(.*) http://example.com/name$1
如果要将任何名称更改为名称,请使用RewriteMap:
RewriteMap lc "int:tolower"
RewriteRule ^([A-Z].*) "${lc:$1}"
这将采用以大写字母开头的任何URI并将其转换为小写。