В моем файле htaccess есть следующее: URL-адрес, например: www.example.com/Page.php?id=About, и превращает его в www.example.com/about. Единственная проблема заключается в том, что старые URL-адреса не перенаправляются на новые URL-адреса, когда я настроил Redirect 301s в htaccess (я понимаю это потому, что вы не должны передавать параметры в базовом Redirect 301s – пример базового перенаправления, вы пробовали ниже).
Redirect 301 /Page.php?id=About http://www.example.com/about
Уловка заключается в том, что новые URL-адреса необязательно просто вытесняют текущий идентификатор и заменяют его строчной версией. Например, я также хотел бы:
Redirect 301 /Page.php?id=Example http://www.example.com/example-page
Я хочу сохранить текущую функциональность переписывания URL-адресов, но также хочу, чтобы любые обращения к старым URL-адресам перенаправлялись на новые (т. Е. Обновлять индекс Google). Посещение www.example.com/Page.php?id=About в настоящий момент по-прежнему работает, но показывает страницу без содержания.
Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z0-9\-]+)/?$ Page.php?id=$1 RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ Page.php?id=$1&tab=$2 RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ Page.php?id=$1&tab=$2&tabid=$3
Если вы добавите это правило в свой .htaccess, он должен выполнить работу с Redirect. Он добавит? Id = О в перенаправление на / о. Если вы работаете с версией 2.4.0 или новее, вы можете добавить флаг QSD для отказа от строки запроса в перенаправлении.
RewriteCond %{QUERY_STRING} ^id=About$ RewriteRule ^page.php /about [NC,R,L]