У меня есть рабочий путь на моем Apache2 localhost (linux):
http://localhost/lab/silex/web/index.php/hello/name
Я хочу стать:
http://localhost/lab/silex/hello/name
Теперь у меня включен режим Rewrite и его тестирование.
Я поместил мой файл .htaccess в свою папку silex / web:
<IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteBase /web/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L] </IfModule>
Я все еще не вижу, как работает чистый URL.
в вашей основной папке попробуйте это: (для вас это будет папка silex)
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ web/$1 [QSA,L] </IfModule>
и в веб-папке:
<IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /web/ RewriteRule ^(.*)$ /$1 [L,R=301] </IfModule>
Попробуйте этот код в файле DOCUMENT_ROOT/.htaccess
:
Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_URI} !/lab/silex/web/index\.php/ [NC] RewriteRule ^(.*)$ /lab/silex/web/index.php/$1 [L]
Я нашел код, который работает, но все же только для / silex / web / hello / name. Я хочу заставить его работать для / silex / hello / name
<IfModule mod_rewrite.c> Options -MultiViews -Indexes RewriteEngine On #RewriteBase /path/to/app RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] </IfModule>