Mod_Rewrite用于不断更改网址

时间:2015-08-14 19:52:25

标签: .htaccess mod-rewrite url-rewriting url-masking

我有一个网址,让我们说它的blog.art.ca/Customer/AAAABBBB/index.html 我想隐藏客户和AAAABBBB。现在AAAABBBB可以是任何8个字符的字母数字代码。

Options +FollowSymLinks -Multiviews -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^Customer/(.*)$ /$1 [L,R]
</IfModule>

我尝试了很多东西,但是,我要么得到ERR_TOO_MANY_REDIRECTS,要么只是导致服务器崩溃。任何建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

您仍然需要允许请求到达实际请求的资源,因此您需要两组规则,一组用于浏览器,以显示新的较短网址(301永久重定向)和第二组将此映射撤消回原始URL,以便Apache可以找到正确的服务,例如。

RewriteBase /

# Remove Customer/AAAABBB from the URL shown in the browser.
RewriteCond %{QUERY_STRING} !customer=
RewriteRule ^Customer/([^/]+)/(.*) /$2?customer=$1 [L,QSA,R=301]

# Internally undo any masked rewrites.
RewriteCond %{QUERY_STRING} customer=([^&]+)
RewriteRule (.*)  /Customer/%1/$1 [L]
相关问题