Mam zestaw adresów URL w postaci www.website.co.uk/businessname
i mają one na celu przekierowanie proxy htaccess w celu pobrania danych z innej domeny na serwerze.
Oto co mam:
#Start Business pages
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.outputside.org.uk/swellcottage$
RewriteRule ^(.*) http://www.datasite.co.uk/$1 [P]
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.outputsite.org.uk/hawthorn-books$
RewriteRule ^(.*) http://www.datasite.co.uk/$1 [P]
#End Business Pages
Pierwsza reguła działa idealnie, wyświetlając zawartość http://www.datasite.co.uk/swellcottage
na adres URL www.outputsite.org.uk/swellcottage
ale druga reguła / warunek nie działa.
Spojrzałem na ucieczkę -
znak w adresie URL jako taki:
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.outputsite.org.uk/hawthorn-books$
RewriteRule ^(.*) http://www.datasite.co.uk/$1 [P]
#End Business Pages
Ale nadal nie wydaje się, aby włączało się to poprawnie, reguły przepisywania nie działają, a strona odpowiada rezerwowym 404, że strona www.outputsite.org.uk/hawthorn-books
nie istnieje.
Gdzie indziej i jak inaczej powinienem uciec od kreski lub inaczej, co jest nie tak z moją składnią tutaj?
ps. Mam to, że nazwy plików (index.php) i nazwy folderów (/ places /) nie podlegają przekierowaniom proxy.
AKTUALIZACJA
W moim htaccess mam więcej zasad:
#to add www. to each request.
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
#Start biz pages
...
#End biz Pages
#to prevent error looping
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
Uruchomiłem również ten sam kod powyżej z hawthornbooks
bez myślnika, ucieczki lub w inny sposób, a kod działa poprawnie, więc muszę znaleźć właściwy sposób na ucieczkę znaku myślnika. Cały kod i praca to utf-8.
UWAGA: ten problem wydaje się podobny do Dlaczego jeśli wstawię myślnik „-” do reguły w moim htaccess nie działa? ale nie znalazłem rozwiązania tego problemu.
Odpowiedzi:
1 dla odpowiedzi № 1Jeśli problem jest tylko łącznikiem, powinno to działać:
#Start Business pages
RewriteCond %{HTTP_HOST} ^(www.)?outputside.org.uk$ [NC]
RewriteRule ^(swellcottage)/?$ http://www.datasite.co.uk/$1 [P,NC]
RewriteCond %{HTTP_HOST} ^(www.)?outputside.org.uk$ [NC]
RewriteRule ^(hawthorn.books)/?$ http://www.datasite.co.uk/$1 [P,NC]
#End Business Pages
0 dla odpowiedzi nr 2
To ma być rozwiązanie tymczasowe, a nie trwałe, ale możesz wypróbować następującą regułę:
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.outputsite.org.uk/hawthorn([^/]*)/?$
RewriteRule ^(.*) http://www.datasite.co.uk/$1 [P]
Spowoduje to wyszukanie dowolnego identyfikatora URI zgodnego ze wzorcem www.outputsite.org.uk/hawthorn
po którym następuje dowolna liczba znaków (lub zero znaków), które nie jesteś /
a następnie kończąc na (opcjonalnie) /
.