2017-01-31 17 views
1

Kürzlich dachte ich daran, einige SEO freundliche URLs durch Umschreiben und Umleiten von URLs.redirect und rewrite url mit .htaccess

die Regel, die ich schrieb für diese Art von URL funktioniert gut wie xyz.com/abc.php diese automatisch in xyz.com/abc jetzt umgewandelt wurde ich mit dieser Art von Urls abc.com/study.php/abc/123 Hilfe benötigen, die ich auf abc.com/study/abc/123

meine .htaccess-Datei umleiten möchten

ist
RewriteEngine On 

# browser requests PHP 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 

# check to see if the request is for a PHP file: 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^/?(.*)$ /$1.php [L] 

EDIT.

Es war gut, jetzt habe ich meine Meinung geändert, anstatt .php Erweiterung von allen Dateien zu entfernen. Ich möchte .php Erweiterung speziell aus 2 Dateien, d. H. a.php und .

Antwort

1

Sie können Ihre bestehende Regeln optimieren diese PATH_INFO auch wie folgt zu unterstützen:

# browser requests PHP 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\s/+(\S+?)\.php(/\S*)?\sHTTP [NC] 
RewriteRule^/%1%2 [L,R=301,NE] 

# check to see if the request is for a PHP file: 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^/?(.+?)(/.*)?$ /$1.php$2 [L] 
+0

was ist, wenn nur speziell aus zwei Dateien entfernen Endung .php wollen also 'a.php' und' b.php' anstatt aus allen Dateien zu entfernen – parvez

+0

Ersetzen Sie '(\ S +?)' in der ersten Regel und '(. +?)' in der zweiten Regel mit '(a | b)' – anubhava

+0

, wenn ich dieselbe Regel erneut auf a.php anwenden muss und b.php, aber diesmal ist ihr Speicherort im Verzeichnis c wie '/c/a.php und/c/b.php' anstatt des root-Verzeichnisses'/'Ich habe versucht, .htaccess in dieses Verzeichnis zu setzen, aber es funktioniert nicht – parvez