Мне нужна рука, переписывающая некоторые URL-адреса. Мне нужно удалить имя папки из URL-адреса, а также удалить расширение файла php. Пример:

Мне нужно mysite.com/foldername/about.php стать mysite.com/about/

Я должен сказать, что у меня есть несколько статических файлов php, к которым нужно получить доступ из mysite.com/filename/ вместо mysite.com/foldername/filename.php

Заранее благодарю за ваше время.

С уважением.

0
user684511 7 Апр 2011 в 23:20

1 ответ

RewriteEngine On
RewriteRule ^/[.*]/?$ foldername/$1.php#{QUERY_STRING} [NC,L]

Если вы не используете QUERY_STRING (т.е. у вас нет параметров $_GET), вы можете удалить #{QUERY_STRING}

Обратите внимание, что это перезапишет все в вашем корневом каталоге имя_папки/ИМЯ.php.

Если вы хотите исключить определенные пути (например, файлы css, js и другие), я рекомендую вам сделать следующее:

RewriteCond RewriteCond %{REQUEST_URI} !^*.css$
RewriteCond RewriteCond %{REQUEST_URI} !^*.js$
RewriteCond RewriteCond %{REQUEST_URI} !^*.php$
RewriteCond RewriteCond %{REQUEST_URI} !^*DONTREDIRECT*$
RewriteRule ^/[.*]/?$ foldername/$1.php#{QUERY_STRING} [NC,L]
0
Gazler 7 Апр 2011 в 23:33
Спасибо, Газлер, есть ли способ сделать это для каждого файла, а не как регулярное выражение? Потому что у меня все еще есть некоторые файлы php, к которым нужно получить доступ как имя папки/имя файла.php
 – 
user684511
8 Апр 2011 в 00:02
Конечно, вы можете либо исключить их с помощью RewriteCode (что я бы порекомендовал), либо сделать так: RewriteRule ^/about/?$ имя_папки/about.php#{QUERY_STRING} [NC,L]
 – 
Gazler
8 Апр 2011 в 00:04