Я бы хотел, чтобы 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.