Es gibt viele Antworten auf Entfernen index.php
mit mod_rewrite in .htaccess
, aber ich muss index.php?
von eingehenden URLs entfernen und schreiben sie alle, also /index.php?pagename.php
zu /pagename.php
.Entfernen index.php? mit mod_rewrite
Jede dieser Arbeit getrennt, und sie entfernen index.php
1)
RewriteBase/
RewriteRule ^index.php?/(.*)$ $1 [R=301,L]
2)
RewriteBase/
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
Aber nicht die ?
, da die URLs wie folgt aussehen: example.com/?pagename.php
Das Problem ist, dass Die ?
ist ein Sonderzeichen in Regex, also, wenn das hinzugefügt wird, verstehe ich, dass es maskiert werden muss. Aber keiner dieser Arbeit:
1)
RewriteBase/
RewriteRule ^index.php\??/(.*)$ $1 [R=301,L]
2)
RewriteBase/
RewriteCond %{THE_REQUEST} ^GET.*index\.php\? [NC]
RewriteRule (.*?)index\.php\?/*(.*) /$1$2 [R=301,NE,L]
Wie entkommen ich richtig ?
in index.php?
?
Diese Antwort funktioniert nicht für mich; es verlässt die ?
: Mod_rewrite rule to remove index.php
Und darüber hinaus: Gibt es nennenswerte Unterschiede zwischen den beiden Rewrite-Regeln?
Warum die Seite Variable example.com/?page=pagename.php dann nicht ?? – Eric
'index.php? Seitenname.php' sind bestehende Links; Ich kann sie nicht ändern. – BlueDogRanch