.htaccess — Как сгладить строку запроса с помощью htacess, не влияя на то, как php-код

Я хотел бы иметь такой URL

«www.site.com/?u=1» преобразован в этот «www.site.com/1»

Не затрагивая мои сценарии php.

Я также хотел бы понять, как и когда происходит это преобразование на сервере.

Вот что я попробовал без удачи в строке запроса.

Options -Indexes +FollowSymLinks
RewriteEngine On
DirectoryIndex index.php
#////////////Convert 'u' Query String////////////
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?u=$1 [NC]
#/////////////append www before all urls///////////////////////////
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
#///////////////////remove index.php from url/////////////
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

Благодарю.

1

Решение

Вы не хотите u править до вашего перенаправления. Это должно произойти после перенаправления:

Options -Indexes +FollowSymLinks
RewriteEngine On
DirectoryIndex index.php

#/////////////append www before all urls///////////////////////////
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{THE_REQUEST} \ /+index\.php\?u=([^&\ ]+)
RewriteRule ^ /%1? [L,R=301]

#///////////////////remove index.php from url/////////////
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ )
RewriteRule ^ /%1 [R=301,L]

#////////////Convert 'u' Query String////////////
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?u=$1 [L]
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]