Я хотел бы иметь такой 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]
Благодарю.
Вы не хотите 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]
Других решений пока нет …