Я бы хотел, чтобы URL-адрес был таким
mysite.com/language/page/somethingelse
И обработка, которая всегда находится в том же файле, который является index.php
.
Но только для файлов .php
. Я не хочу перенаправлять .js
или .css
или .xml
, файлы изображений и т. Д.
Кроме того, этот проект будет находиться в подпапке, то есть он будет внутри другого без каких-либо отношений. Поэтому он будет доступен следующим образом:
mysite.com/extras/mydifferentproject/language/page/something else
Так что, предположим, файл .htaccess
в mydifferentproject
папке mydifferentproject
понадобится этой строке?
RewriteBase extras/mydifferentproject/
Вы можете использовать это как .htacces
RewriteEngine On RewriteRule ^(?!index\.php$). index.php [NS,L,DPI]
Из папки, в которой находятся .htacces
находится все URL's
. Чтобы получить путь и получить, если он находится в папке и обработать его дальше, эта функция поможет.
function getPath($path){ $called = __FILE__; $called_dir = str_replace("\\","/",pathinfo($called)["dirname"]); $root = str_replace($_SERVER["DOCUMENT_ROOT"], "",$called_dir); $from = '/'.preg_quote($root, '/').'/'; return preg_replace($from,"",$path,1); }
getPath($_SERVER["REQUEST_URI"]);
Это даст вам строку, которая находится за папкой, в которой она находится, поэтому она исключает папку, в которой она находится.
.htacces : находится в папке /folder
url : example.com/folder/some/values
результат функции getPath()
в index.php
: /some/values
как это указано в folder
.
В случае, если ваш URL example.com/index.html
есть, но .htacces
находится в folder
поведение является нормальным. (загрузит index.html)
При загрузке файлов через процесс переноса пути или что-то, что вы делаете с ним. При загрузке запрашивающих файлов в html
обязательно укажите base
из которой должны быть загружены файлы, иначе он будет принимать входные данные сверху и видеть их как папки, а не как значения или что-то, на что он не должен смотреть.
пример
<base href="/folder/">
Я мог бы выполнить следующую задачу, чтобы отправить только .php
файлы в index.php следующим образом:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* index.php [L,QSA]
Теперь я могу получить доступ к изображениям и js, css, xml-файлам и т. Д., Написав их настоящий url в навигационной панели браузера.
Однажды в index.php я использую функцию Nytrix для синтаксического анализа URL.