Obecnie korzystam z hostingu z serwerem lightspeed . Hosting mówi, że mod_rewrite
jest włączony, ale nie mogę uruchomić tam mojego skryptu. Za każdym razem, gdy próbuję uzyskać dostęp do adresu URL, zwraca 404 - nie znaleziono strony.
Umieściłem te same kody na innym serwerze, na którym działa Apache. Tam działa. Więc myślę, że to .htaccess
i mod_rewrite
problem.
Ale obsługa hostingu wciąż nalega, że ich mod_rewrite jest włączony, więc chciałbym wiedzieć, jak mogę sprawdzić, czy jest rzeczywiście włączony, czy nie.
Próbowałem sprawdzić phpinfo()
, ale bez powodzenia, nie mogę mod_rewrite
tam znaleźć , czy to dlatego, że używają lightspeed
?
Czy jest jakiś sposób, aby to sprawdzić? Proszę pomóż mi. Dziękuję Ci.
FYI: mój .htaccess
kod to
Options -Indexes
<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>
Tak też próbowałem
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
Ale ten sam wynik.
źródło
Aby sprawdzić, czy moduł mod_rewrite jest włączony, utwórz nowy plik php w folderze głównym serwera WAMP. Wprowadź następujące informacje
phpinfo();
Uzyskaj dostęp do utworzonego pliku z przeglądarki.
CtrlFaby otworzyć wyszukiwanie. Wyszukaj „mod_rewrite”. Jeśli jest włączony, zobaczysz go jako „Wczytane moduły”
Jeśli nie, otwórz httpd.conf (plik konfiguracyjny Apache) i poszukaj następującego wiersza.
#LoadModule rewrite_module modules/mod_rewrite.so
Usuń znak krzyżyka („#”) na początku i zapisz ten plik.
Zrestartuj serwer Apache.
Uzyskaj dostęp do tego samego pliku php w przeglądarce.
Wyszukaj ponownie „mod_rewrite”. Teraz powinieneś być w stanie go znaleźć.
źródło
phpinfo()
„Server API” zawiera „CGI / FastCGI”).phpinfo()
nie wyświetla włączonych modułów. W takim przypadku zobacz Jak sprawdzić, czy mod_rewrite w PHP CGI .Jeśli używasz pliku konfiguracyjnego hostów wirtualnych, upewnij się, że dany host wirtualny ma taką dyrektywę
AllowOverride All
:Zasadniczo oznacza to zezwolenie na przetwarzanie wszystkich dyrektyw .htaccess.
źródło
...
w<Directory ...>
? Co mam tam umieścić? katalog, w którym znajduje się plik .htaccess?ServerName
, nie zmieniłem nazwy katalogu, po tym i ponownym uruchomieniu Apache wszystko było w porządku.Jeśli apache_get_modules () nie zostanie rozpoznana lub brak informacji o tym module w phpinfo (); spróbuj przetestować przepisywanie modów, dodając te linie do pliku .htaccess:
Oraz mod_rewrite.php:
źródło
konsola:
źródło
Jeśli
zwraca
true
wtedy mod-rewrite jest włączony.źródło
Zdefiniowana
apache_get_modules()
funkcja PHP zwraca listę włączonych modułów. Aby sprawdzić, czymod_rewrite
jest włączona, możesz uruchomić następujący skrypt na swoim serwerze:Jeśli powyższy przykład nie powiedzie się, możesz zweryfikować przepisywanie modów za pomocą swojego
.htaccess
pliku.Utwórz
htaccess
plik w katalogu głównym dokumentu i dodaj następującą regułę rewriteRule:Teraz odwiedź http://example.com/HelloWorld. Zostaniesz wewnętrznie przekierowany na stronę /index.php Twojej witryny. W przeciwnym razie, jeśli mod-rewrite jest wyłączone, otrzymasz błąd serwera 500 Internel.
Mam nadzieję że to pomoże.
źródło
.htaccess
?możesz to zrobić na terminalu:
zaczerpnięte z 2daygeek
źródło
sudo
Działa to na CentOS:
Powinien wyjść
rewrite_module (shared)
źródło
Jeśli ten kod znajduje się w twoim pliku .htaccess (bez sprawdzania mod_rewrite.c)
i możesz odwiedzić dowolną stronę swojej witryny z błędem serwera 500. Myślę, że można bezpiecznie powiedzieć, że przepisywanie modów jest włączone.
źródło
Możesz użyć funkcji php
i sprawdź mod_rewrite
http://in2.php.net/apache_get_modules
źródło
Jeśli jesteś w systemie Linux, możesz sprawdzić wszystkie włączające moduły dla apache2 (w moim przypadku) w następującym folderze: / etc / apache2 / mods-available
do wpisania:
ll -a
jeśli chcesz sprawdzić dostępne moduły dla php (w tym przypadku php 7) folder /etc/php/7.0/mods-available
pisać:
ll -a
źródło
po prostu utwórz nową stronę i dodaj ten kod
i uruchom tę stronę, a następnie dowiesz się, że moduł jest dostępny lub nie, jeśli nie, możesz poprosić o hosting lub jeśli chcesz go włączyć na komputerze lokalnym, sprawdź ten samouczek na youtube krok po kroku dotyczący włączania modułu przepisywania w wamp apache https://youtu.be/xIspOX9FuVU?t=1m43s ikona serwera Wamp -> Apache -> Apache Modules i zaznacz opcję przepisywania modułu
źródło
Wiem, że to pytanie jest stare, ale jeśli możesz edytować plik konfiguracyjny Apache na
AllowOverride All
zAllowOverride None
źródło
Musisz tylko sprawdzić, czy plik tam jest, wpisując
cat /etc/apache2/mods-available/rewrite.load
Wiersz wyniku nie może być komentowany zaczynając od
#
źródło
Ten kod zadziałał dla mnie:
źródło
Miałem dokładny problem, rozwiązałem go, klikając niestandardową strukturę, a następnie dodając
/index.php/%postname%/
i działaMam nadzieję, że to oszczędza komuś stresu, przez który przeszedłem, znajdując, do cholery, z tym nie tak.
źródło