Я пытаюсь создать масштабируемое RewriteRule для своего .htaccess, я использую каждое слово перед косой чертой в качестве параметра.
например: http://localhost/mysite/param1/param2/param3/.../param20
Я работаю с этим кодом (но если мне нужно 6-7 параметров, это будет слишком долго):
Options +FollowSymLinks
RewriteEngine on
DirectoryIndex web.php?param1=inicio
RewriteRule ^([a-zA-Z0-9_-]+)$ web.php?param1=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ web.php?param1=$1¶m2=$2
Следующая rewriteRules будет длиннее ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$/([a-zA-Z0-9_-]+)$/([a-zA-Z0-9_-]+)$/([a-zA-Z0-9_-]+)$ web.php?param1=$1¶m2=$2¶m3=$3¶m4=$4¶m5=$5
Я отправляю каждый параметр в php как отдельную переменную и использую первый параметр, чтобы решить, какая страница должна отображаться в web.php. Есть ли способ сократить его? Я не знаю, как его оптимизировать. Я даже не знаю, на правильном ли я пути. Как бы вы это сделали? Может быть, используя php? Спасибо.
Вы не должны выполнять синтаксический анализ параметров в RewriteRule, за исключением случаев, когда у вас есть небольшое фиксированное количество параметров (например, MediaWiki делает).
Вместо этого перенаправляйте каждый запрос (или их подмножество, основанное, например, на первые символы URL-адреса) на PHP-скрипт, который будет выполнять синтаксический анализ самого URL-адреса. Затем он будет отображать правильную страницу в зависимости от того, что он проанализировал.