Переписать url /powers/power.php?power=

Я хочу переписать свой url, url использует переменную, я думаю, ее вызвал, но я хочу сократить URL-адрес до http://xatwebs.co/powers/gold , поскольку в настоящий момент это http: //xatwebs.co/powers/power?power=gold У меня есть поиск методов перезаписи, но те, которые я попробовал, либо полностью сломали, либо сделали переадресацию цикла, делая страницу невидимой

Redirect 301 /trusted http://community.xat.com/showthread.php?28330-Prize-Holders
Redirect 301 /forums http://xatwebs.co/forum
RewriteEngine on
RewriteBase /

# force url to lowercase
RewriteCond %{REQUEST_URI} [A-Z]
# ensure it is not a file on the drive first
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule (.*) rewrite-strtolower.php?rewrite-strtolower-url=$1 [QSA,L]
RewriteEngine on
#
# If requested URL-path plus ".php" exists as a file
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
# Rewrite to append ".php" to extensionless URL-path
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
RewriteCond %{HTTP_HOST} ^xatwebs\.co$ [OR]
RewriteCond %{HTTP_HOST} ^www\.xatwebs\.co$
RewriteRule ^notice1$ "http\:\/\/assistance\.xatwebs\.co\/general\/inactivity\-notice\/" [R=302,L]

RewriteRule ^powers/(.+)$ /power.php?power=$1 [QSA,NC,L]

Обновление: Я думаю, что исправил его, используя этот код, поскольку он позволяет мне делать xatwebs.co/powers/red но он не перенаправляется из xatwebs.co/powers/power.php?power=red

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.xatwebs.co
RewriteRule (.*) http://xatwebs.co/powers/$1 [R=301,L]

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ power.php?power=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ power.php?power=$1
2 голоса | спросил user2734128 11 J0000006Europe/Moscow 2015, 20:58:42

1 ответ


1

Вам нужно всего лишь RewriteEngine On один раз в верхней части вашего файла .htaccess.

Всегда иметь внешние перенаправления перед перезаписывать внутренние сообщения.

Итак, чтобы перенаправить с "уродливого" (/powers/power.php?power=red) URL-адреса на "pretty "(/powers/red) URL (чтобы удовлетворить поисковые системы и всех, кто связан с вашим сайтом), вы можете сделать что-то вроде этого:

# Redirect typed querystring URLs to "pretty" URLs
RewriteCond %{THE_REQUEST} \?power=([^\ ]*)
RewriteRule ^powers/power\.php$ /powers/%1? [R=301,L]

Это проверяет код THE_REQUEST, чтобы избежать возможного цикла перезаписи (вызванного следующим переписанием).

Затем внутренне переписать с «симпатичного» URL-адреса обратно на «уродливый» (реальный), что-то похожее на то, что у вас есть после вашего обновления:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !^power=
RewriteRule ^powers/(.*) /powers/power.php?power=$1 [L]

Хотя из ваших примеров немного неясно, является ли /powers частью URL-адреса или нет (вы упоминаете это в описании но он, кажется, опускается из вашего «рабочего» обновления)? Поэтому это может потребовать корректировки. Это также заменяет фрагмент кода без добавочных URL-адресов.

Не переписывайте прямые запросы на файлы, которые уже существуют в файловой системе - на всякий случай, если у вас есть сценарии или таблицы стилей, которые соответствуют этому шаблону. Также это не переписывает запросы, у которых уже есть параметр строки запроса.

Сделайте (.*) более строгим, если вам нужно.

ответил MrWhite 12 J0000006Europe/Moscow 2015, 19:51:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132