Я работаю над созданием внутренней CMS для клиентов. Вместо того, чтобы создавать новый файл php для каждой страницы, мне интересно, есть ли способ загрузить страницу на основе URL-адреса, но не физический php-файл в этом месте.
Итак, если я посещаю сайт www.mysite.com/new-page, мне бы хотелось, чтобы это просто ссылка на мой шаблон, контент и т. Д., А не на настоящий .php-файл.
Извините, если я не объяснил это правильно, но мне сложно объяснить это.
Благодарю.
Похоже, вам нужен шаблон Front Controller .
В основном каждый URL-адрес перенаправляется на одну страницу PHP, которая определяет, что с ним делать. Вы можете использовать Apache mod_rewrite для этого с помощью этого .htaccess:
RewriteEngine on RewriteBase / RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php
Это перенаправляет все, кроме файлов статического содержимого, на index.php. При необходимости отрегулируйте.
Если вы просто хотите повлиять на URL / новую страницу, попробуйте что-то вроде:
RewriteEngine on RewriteBase / RewriteRule ^new-page/ myhandler.php
Любые URL-адреса, начинающиеся с «новой страницы», будут отправлены на myhandler.php.
Обычно это веб-сервер, который обрабатывает это для вас в сочетании с вашим PHP-кодом. Например, если вы используете Apache, вы можете использовать mod_rewrite, чтобы сделать что-то вроде:
RewriteEngine on RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]
А затем в вашем php-коде вы можете проверить $_GET['page']
чтобы увидеть, какая страница вызывается.
Так что посещение mysite.com/page/blah
действительно mysite.com/page/blah
бы доступ к index.php?page=blah
.
Решение использовать mod_rewrite для перезаписи URL-адресов на одной из страниц PHP. Я предпочел бы использовать более общее правило перезаписи, которое переписывает любые URL-адреса, которые не относятся к файлу каталога, существующего на сервере.
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]