2012-03-29 3 views
0

Ich möchte neu zu schreiben:Umschreiben `admin` zu` admin.php` und alles andere zu `main.php`

  • http://mydomain zu ./main.php
  • http://mydomain/abc-./main.php/abc
  • http://mydomain/abc?def=xyz zu ./main.php/abc?def=xyz
  • http://mydomain/admin bis ./admin.php
  • http://mydomain/admin/abc bis ./admin.php/abc

und hier meine aktuellen .htaccess-Datei ist:

Options -Indexes 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^$ ./main.php [QSA,L] 
RewriteRule ^/$ ./main.php [QSA,L] 
RewriteRule ^admin$ ./admin.php [NC,L] 
RewriteRule ^admin/$ ./admin.php [NC,L] 
RewriteRule ^admin/([a-zA-Z0-9-_]+)$ ./admin.php/$1 [NC,L] 

RewriteRule ^([a-zA-Z0-9-_]+)$ ./main.php/$1 [NC,L] 

Aber ich erhalte Fehler Forbidden wenn http://mydomain Zugriff auf was habe ich verpasst?

Antwort

0

Warum leiten Sie "admin" auf "./admin.php" um? Wenn ich recht habe, würde diese Weiterleitung zu einer URL führen wie: http://domain.com/./admin.php - ist das korrekt?

Weiter bin ich unsicher, weil "admin" Teil von "^ ([a-zA-Z0-9 -_] +) $" ist, die Sie in Ihrer letzten Rewrite-Regel verwenden, daher würde "admin" auch in "./main.php" umgeleitet werden.

Vielleicht mögen Sie das Rewrite-Protokoll zu ermöglichen, einen tieferen Blick zu haben, was die Rewrite-Modul tut:

RewriteEngine On 
RewriteLog "/var/log/apache2/rewrite_log" 
RewriteLogLevel 5 

Es könnte auch in /var/log/apache/error.log oder den Zugang zu schauen helfen .log, um die umgeschriebene URL herauszufinden.

1

Sie diesen Code in Ihre .htaccess verwenden können:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
# If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
# If the request is for a valid link 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
# don't do anything 
RewriteRule^- [L] 

RewriteRule ^admin/?(.*)$ admin.php/$1 [NC,L] 

RewriteRule ^(.*)$ main.php/$1 [L] 
Verwandte Themen