遇到.htaccess重定向通配符规则的问题

时间:2014-01-17 00:20:22

标签: .htaccess redirect

我有很多需要在.htaccess中重定向的网址。我们的服务器位于共享VPS上,因此我们必须使用.htaccess文件来进行重定向 旧网址: Cognitive_Direct_Thermal_Paper_Labels.html
新网址: cognitive-direct-thermal-paper-labels.html

提前谢谢!

2 个答案:

答案 0 :(得分:0)

假设您的网址如下所示:

http://example.com/Cognitive_Direct_Thermal_Paper_Labels.html

并需要重定向到:

http://example2.com/cognitive-direct-thermal-paper-labels.html

您可以使用一些规则来处理所有这些规则,但就像我说的那样,您只能使用htaccess文件将大写字母更改为小写

类似于:

RewiteEngine On

# redirect if there are no underscores
RewriteRule ^([^_]+)\.html$ http://example2.com/$1.html [L.R]

# remove the underscores and change them to dashes
RewriteRule ^(.*)_(.*)\.html$ /$1-$2.html [L]

答案 1 :(得分:0)

我四处搜寻并发现了这一点。我已经测试了我的htaccess和大写字母到小写的效果非常好。如果有人正在阅读此内容,只需将以下代码放在.htaccess文件的顶部即可。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# If there are caps, set HASCAPS to true and skip next rule
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]

# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] - [S=28]

# Replace single occurance of CAP with cap, then process next Rule.
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2

# If there are any uppercase letters, restart at very first RewriteRule in file.
RewriteRule [A-Z] - [N]

RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]
</IfModule>