У меня есть URL-адреса
http://mysite.com/index.php?p=resources http://mysite.com/index.php?p=resources&s=view&id=938
но я хочу, чтобы URL-адреса
http://mysite.com/resources http://mysite.com/resources/view/938
вместо того, чтобы делать сотни правил перезаписи, я задаюсь вопросом, можно ли просто иметь один? Ive head это возможно, «получив uri и разбив его на части», а затем просто добавьте правило перезаписи для index.php
но как? может кто-нибудь привести пример или связать учебник
Я использую это в .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* index.php [L]
Это по сути вызывает index.php, независимо от того, что запрашивается. Затем внутри вашего PHP-кода вы можете посмотреть $ _SERVER ['REQUEST_URI'], чтобы получить URL-адрес и проанализировать его соответствующим образом.
Строки RewriteCond предназначены для исключения прямых вызовов файлов. В моем случае я не хочу, чтобы такие вещи, как запросы на файлы js / css / image, проходили через index.php по соображениям производительности.
Создайте файл .htaccess. Не somefilename.htaccess, он просто называется .htaccess.
Примечание. Файлы index.php и .htaccess должны находиться в одном каталоге.
Теперь попробуйте это в файле .htaccess.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([A-Za-z0-9\-]+)$ index.php?p=resources
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)$ index.php?p=resources&s=view&id=938
</IfModule>
подробнее о переписывании URL здесь