2017-02-11 6 views
1

i von dieser URL wollenwie url in .htaccess-Datei neu zu schreiben

http://localhost/hiraniconfigmgr/subCategoryList.php?category=Test 

zu

http://localhost/hiraniconfigmgr/subCategoryList/Test 

ich versuche, habe diesen Code, es funktioniert gut, aber es blockiert js oder CSS-Datei

RewriteCond %{REQUEST_URI} ((.*)/(.*)) 
RewriteRule ^(.*)/(.*)$ $1.php?category=$2 

selbst habe ich verwendet, um Code für das ausblenden Dateierweiterung adaequat Code ist belowe

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php 

Antwort

0

Wenn Ihr .htaccess befindet sich innerhalb /hiraniconfigmgr dann können Sie diese Regeln:

Options -MultiViews 
RewriteEngine On 

RewriteRule ^([\w-]+)/([\w-]+)/?$ $1.php?category=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

Denken Sie auch daran, dass Sie relative Links möglicherweise nicht, wenn Ihre aktuelle URL ist http://localhost/hiraniconfigmgr/subCategoryList/Test.Um dies zu beheben, dass Sie dies nur unter <head> Abschnitt Ihrer Seite HTML hinzufügen:

<base href="/hiraniconfigmgr/" /> 

so dass jede relative URL ist von dieser Basis-URL aufgelöst und nicht aus der URL der aktuellen Seite.

Ausschalten MultiViews Option Options -MultiViews verwendet, wird empfohlen, da Ihr Link Name subCategoryList gleiche wie .php Dateiname ist.

0

Es klingt, als ob Sie nur *.php Dateien umschreiben möchten.

Sie könnte sich ändern, Ihre RewriteRule zu:

RewriteCond %{REQUEST_URI} ((.*)/(.*)) 
RewriteRule ^(.*)/(.*\.php.*)$ $1.php?category=$2 

Außerdem, wenn Sie wollen nur Pfade mit category?=.* Query-String parms neu zu schreiben:

RewriteCond %{REQUEST_URI} ((.*)/(.*)) 
RewriteRule ^(.*)/(.*\.php\?category=.*)$ $1.php?category=$2 
0

Sie wahrscheinlich für so etwas sind lookig:

RewriteEngine on 
RewriteRule ^/?hiraniconfigmgr/subCategoryList/([^/+])$ /hiraniconfigmgr/subCategoryList.php?category=$1 [END] 

Die obige Regel wird wor k in der HTTP-Server-Host-Konfiguration und in einer dynamischen Konfigurationsdatei (.htaccess) in den Hosts DocumentRoot ohne irgendeine Änderung.

Eine Alternative ist eine solche dynamische Konfigurationsdatei innerhalb des /hiraniconfigmgr Ordner zu platzieren, dann kann der Code, dass verkürzt werden:

RewriteEngine on 
RewriteRule ^subCategoryList/([^/+])$ subCategoryList.php?category=$1 [END] 

Wenn Sie erhalten eine HTTP-Status 500 bei der Verwendung dieser Regel (Internal Server Error) Wahrscheinlich verwenden Sie eine sehr alte Version des Apache http-Servers. Versuchen Sie in diesem Fall, das Flag [END] durch das Flag [L] zu ersetzen und versuchen Sie es erneut.

Wenn Sie sich für die Verwendung einer dynamischen Konfigurationsdatei entscheiden (im Gegensatz zur Hostkonfiguration für echte HTTP-Server), müssen Sie darauf achten, dass die Interpretation solcher Dateien in der Hostkonfiguration überhaupt aktiviert ist.


Und ein allgemeiner Hinweis: Sie sollten immer bevorzugen solche Regeln in der http-Server-Host-Konfiguration der Verwendung dynamische Konfigurationsdateien („.htaccess“) statt zu platzieren. Diese Dateien sind notorisch fehleranfällig, schwer zu debuggen und verlangsamen den Server wirklich. Sie werden nur als letzte Option für Situationen angeboten, in denen Sie keine Kontrolle über die Host-Konfiguration haben (lesen Sie: wirklich günstige Hosting-Service-Provider) oder wenn Sie eine Anwendung haben, die eigene Schreibregeln schreibt (was ein offensichtlicher Sicherheitsalarm ist)).

Verwandte Themen