Как я могу отправить только файлы .php на одну страницу?

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