Так сложилось, что мне в моем веб-приложении (php + Laravel 5.8) нужно обрабатывать маршрут который содержит символ ":" (httt://example.ru/test:sub). Уйди от этого символа возможности нет. Проект работает на хостинге под asp.net, и там все отлично отрабатывает. Когда я его разворачиваю локально, мой OpenServer (Apache) наотрез отказывается принимать такой uri и возвращает 403 ошибку.
Так все работает и локально и на хостинге:
Route::get('/testsub', function () {
return view('test');
});
Так работает только на хостинге, локально - 403 ошибка:
Route::get('/test:sub', function () {
return view('test');
});
На удаленном хостинге файл web.config:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)/$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="/{R:1}" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
Локально .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Прошу, помогите указать на ошибку. Очень нужно работать с этим проектом локально, т.к. работы очень много.
Apache под Windows не разрешает использовать двоеточие в первой части пути (в Linux такой проблемы нет)
Если это приемлемо, попробуйте добавить еще один уровень вложенности:
Route::get('/subdir/test:sub', function () {
return view('test');
});
Или используйте сервер PHP вместо апача:
php artisan serve
после запуска этой команды сайт будет доступен по http://127.0.0.1:8000
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Хочу сменить сортировку на сайте с "по-умолчанию" на "сначала дорогие"Долго возился, но не смог сделать сам
Говорят что в С++ нельзя передать массив по значению в функцию, тогда объясните что делает мой кусок кода: `
Я только начал изучать указатели (1 день) и не могу понять как передать указатель из функции create_matrix() в main(), а в ней уже вызвать другую функцию...