2017-07-25 5 views
1

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?

+0

Warum die Seite Variable example.com/?page=pagename.php dann nicht ?? – Eric

+0

'index.php? Seitenname.php' sind bestehende Links; Ich kann sie nicht ändern. – BlueDogRanch

Antwort

1

können Sie diese Regel in .htaccess Site-Stamm verwenden:

RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?([^&\s]+)\s [NC] 
RewriteRule^/%1? [R=301,L] 
+1

Schön! Funktioniert super. Und das sind 301 Redirects, wie ich von 'R = 301' sehe? – BlueDogRanch

+0

Ja das ist richtig – anubhava

+0

Natürlich, ein anderes Problem :) Es scheint, dass der größte Teil der Website von Google als /?PageName.php indiziert wird, während auch zugänglich und intern als /index.php?PageName.php verlinkt. Ihre Regel funktioniert immer noch, aber ich habe 'RewriteCond% {THE_REQUEST} \ s/+ \? (\ S +) [NC]' als zweite Regel unter Ihrer Regel versucht, um das '?' Zu entfernen, aber meine Regel scheint alle umzuleiten index.php. Irgendwelche Ideen? – BlueDogRanch

Verwandte Themen