htaccess для нескольких необязательных параметров - PullRequest
1 голос
/ 29 февраля 2012

Моя миссия заключается в достижении

http://localhost/projectname/media/video

из

http://localhost/projectname/index.php?m=media&cmd=video

, а также

http://localhost/projectname/home

http://localhost/projectname/index.php?m=home

Ниже файлы помогают выполнить мою миссию

RewriteRule ^([^/]*)$ /projectname/index.php?m=$1 
RewriteRule ^([^/]*)/([^/]*)$ /projectname/index.php?m=$1&cmd=$2 

Дело в том, что любые внешние файлы, такие как javascript и css, не будут приняты в игру.

я знаю, что моя альтернатива - это htaccess

RewriteRule ^([^/]*)/cmd/([^/]*)$ /projectname/index.php?m=$1&cmd=$2 

, который позволяет http://localhost/projectname/media/cmd/video

Я хотел бы сделать это без CMD.Какие-либо предложения?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Измените ваши правила следующим образом:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ projectname/index.php?m=$1&cmd=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ projectname/index.php?m=$1 [L,QSA]

И убедитесь, что ваши файлы js, css, images используют абсолютный путь, а не относительный.Это означает, что их пути должны начинаться с http:// или /.

1 голос
/ 29 февраля 2012

почему бы просто не передать все в index.php, а затем обработать / проанализировать путь, например,

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Затем использовать

$_SERVER['PATH_INFO']
$_SERVER['ORIG_PATH_INFO']
$_SERVER['QUERY_STRING']

http://php.net/manual/en/reserved.variables.server.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...