2015-08-14 3 views
0

У меня есть url, скажем, его blog.art.ca/Customer/AAAABBBB/index.html , и я хочу скрыть клиента и AAAABBBB. Теперь AAAABBBB может быть любым 8-символьным буквенно-цифровым кодом.Mod_Rewrite for постоянно меняющийся url

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

Я пробовал множество вещей, однако, я либо получить ERR_TOO_MANY_REDIRECTS или он просто заставляет сервер аварии. Любые предложения будут высоко ценится!

+0

«Я хочу скрыть клиента ** и AAAABBBB **»? Я не вижу, как приведенный выше код создает цикл переадресации? И когда вы говорите «заставляет сервер врезаться» - буквально ?! Какая у вас ошибка? – MrWhite

+0

В частности, это на самом деле просто говорит о том, что сервер, похоже, разбился. Я новичок в HostPapa, поэтому я не уверен, как еще прояснить это. Я не уверен, что приведенный выше код действительно делает re-dircet, поскольку мне никогда не приходилось иметь дело с mod_rewrite, и я не мог найти ничего, что объясняло бы, как обращаться с этими изменяющимися кодами, и это было то, что я нашел для обработки, по крайней мере, папка «Клиент» –

ответ

2

По-прежнему необходимо разрешить запросам получать требуемые ресурсы, поэтому вам потребуется два набора правил: один для браузера, чтобы показать новый более короткий URL (постоянное перенаправление 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] 
+0

Я попытался использовать это как есть, и он вернул 500 (Внутренняя ошибка сервера), однако он переписывает URL-адрес. Обычно URL соответствует custom.company.ca/Customer/AAAABBBB/index.html, где теперь ссылка становится custom.company.ca/index.html?customer=AAAABBBB. –

+0

Итак, первое правило работает по назначению,/Customer/Aaaaabbbb/больше не находится в URL-адресе (скрыто), но теперь передается как переменная CGI. Может быть сделано абсолютно невидимым Cookie с простой настройкой. Во всяком случае, ошибка 500 будет зависеть от реализации второго правила, создающего URL-адрес, который не соответствует ожидаемому бэкэнд. – arober11

+0

Я попытался внести множество изменений в эту вторую часть, чтобы заставить ее работать и столкнулся с проблемой, когда теперь она просто игнорирует файл .htaccess. Я верю, что ответ, который вы представили, был правильным, я просто не могу надежно реализовать его, по-видимому. –