Moja htaccess RewriteRule działa na localhost / mysite, ale nie na mysite.com na współużytkowanym hostie 1 i 1
niestety rozwiązanie nie jest zadowalające. Dziś rano, kiedy próbowałem Sugestii @ Wige, odkryłem, ku mojemu zdziwieniu, że Oczekiwane wartości BYŁY faktem wysłane na stronę jakoGET
pytanie. Najwyraźniej 1 i 1 (o których wiem, że dokonywali zmian w swoim środowisku przez ostatnie kilka tygodni), zrobili coś za kulisami, które magicznie naprawiły mój problem, a teraz wszystkie moje wcześniej nie działające kodyjest działa jak pierwotnie oczekiwano.
Nowa informacja: TheApache wersja serwera produkcyjnego jest1.3.34
vs2.2.21
na moimLokalny Gospodarz.
Mam problem z ustaleniem, dlaczego mój RewriteRule nie działa prawidłowo w produkcji.
RewriteRule ^page/pretty-url/(.*)$ page.php?query=$1 [L]
W moim lokalnym środowisku testowym (localhost/mysite/page/pretty-url/{...}
) działa dobrze, ale namysite.com/page/pretty-url/{...}
to nie działa poprawnie. Ładujepage.php
zgodnie z oczekiwaniami, ale najwyraźniej?query=$1
kawałek jest ignorowany ($_GET
jest pusty)
Wyobrażam sobie, że problem jest w jakiś sposób związany z konfiguracją serwera. Jestem na 1 i 1 wspólnym koncie hostingowym bez dostępu httpd.conf.
Co toRewriteRule
robi (lubpowinien robić):
Chcę takie urle
*example.com/page/pretty-url/{{info_for_dynamic_content}}
do przepisania
*/page.php?query={{info_for_dynamic_content}}
Więc mogę uzyskać dostępinfo_for_dynamic_content
w ciąguphp
tak jak$_GET['query']
Pełny plik .htaccess w celach informacyjnych:
AddHandler x-mapp-php6 .php
DirectoryIndex index.php
ErrorDocument 404 /index.php
Options +FollowSymLinks
# per @Jacques Chester's suggestion
Options -MultiViews
RewriteEngine on
RewriteBase /
# the rule in question
RewriteRule ^page/pretty-url/(.*)$ page.php?query=$1 [L]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteRule (.*) /index.php [L]