Перезапись URL-адресов двух подпапок в папке / public (корневой документ) - PullRequest
0 голосов
/ 23 марта 2019

В настоящее время у меня есть «общедоступная» папка, являющаяся корневым каталогом, куда идет весь мой код внешнего интерфейса.

Но так как моя общая папка содержит как содержимое веб-сайта, так и содержимое приложения, я бы хотел разделить его пополам.Итак, моя идея была:

.htaccess (rewriting public url)
src (php backend code)
public/
  web/
    index.php
  app/
    account.php

Итак, моя проблема в том, что я могу легко перейти на такие страницы:
http://example.com/web/index.php
http://example.com/app/account.php

, но я быкак удалить "web" и "app" из URL-адресов ...
http://example.com/index.php
http://example.com/account.php

Как это сделать с помощью .htaccess?Я использую Apache 2.4.

РЕДАКТИРОВАТЬ
Пример того, что я пробовал:

RewriteEngine On
RewriteCond %{REQUEST_URI} !app/
RewriteRule (.*) /app/$1
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Возможно, вам нужно настроить ваши запросы.Но первый подход:

Во-первых, убедитесь, что у вас включена перезапись модов.Во-вторых, напишите следующее в .htaccess

RewriteEngine On
RewriteRule ^[/]?index.php$ /web/index.php [NS,NC,L]
RewriteRule ^[/]?account.php$ /app/account.php [NS,NC,L]

. Вам нужно будет прочитать документацию, чтобы установить другие правила.Вы можете прочитать его здесь https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Также обратите особое внимание на флаги.Прочитайте документацию, чтобы установить те из них, которые применимы к вашей ситуации.

0 голосов
/ 24 марта 2019

Я пробовал так много разных вещей сейчас, но Я наконец-то понял это .

RewriteEngine on
RewriteBase /
# Rewrite every web request
RewriteCond         "%{DOCUMENT_ROOT}/web/%{REQUEST_URI}"  -f
RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/web/$1"

# Rewrite every app request
RewriteCond         "%{DOCUMENT_ROOT}/app/%{REQUEST_URI}"  -f
RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/app/$1"

# Remove .php extension
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Это работает при настройке:

public/ (root folder)<br>
   web/ (contains website frontend)<br>
   app/ (contains app frontend)<br>
   .htaccess (contains the code above)
...