Перезапись переменной для нескольких страниц .php

0

Я пытаюсь получить доступ к двум моим страницам и переписать их URL с помощью.htaccess.

Первая страница, к которой я пытаюсь получить доступ:

http://api.aotikbot.tv/polls.php?username=aotik

Вторая страница, к которой я пытаюсь получить доступ:

http://api.aotikbot.tv/getpoll.php?poll=917529

Мой текущий.htaccess код:

# Apache Rewrite Rules

 <IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteBase /

# Add trailing slash to url
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
  RewriteRule ^(.*)$ $1/ [R=301,L]

# Remove .php-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^[A-Za-z0-9-]+/([A-Za-z0-9-]+)/?$ polls.php?username=$1 [NC,L]
  RewriteRule ^[A-Za-z0-9-]+/([A-Za-z0-9-]+)/?$ getpoll.php?poll=$1 [NC,L]

  RewriteRule ^([^\.]+)/$ $1.php 
  # Remove .html-extension from url
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.html -f
  RewriteRule ^([^\.]+)/$ $1.html 

# End of Apache Rewrite Rules


 </IfModule>

Первая страница работает как /polls/username, но вторая не читает значение опроса, и я думаю, что перенаправляется на polls.php.

Может ли кто-нибудь объяснить, что я делаю неправильно?

заранее спасибо

  • 0
    Они оба - одно и то же правило, так что вы попадете в polls.php потому, что он первый. Разве вы не хотите, чтобы URL были чем-то вроде /polls/username и /getpoll/poll ?
  • 0
    Также было бы полезно, если бы вы опубликовали, как вы хотите, чтобы ваши URL выглядели.
Теги:
.htaccess
mod-rewrite

1 ответ

0
Лучший ответ
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^[A-Za-z0-9-]+/([0-9-]+)/?$ getpoll.php?poll=$1 [NC,L]
RewriteRule ^[A-Za-z0-9-]+/([A-Za-z0-9-]+)/?$ polls.php?username=$1 [NC,L]

Здесь я поменял ваши два правила, поэтому сначала проверяем идентификаторы (для getpoll - обратите внимание, как я удалил буквы из выражения). Если мы не выполняем проверку идентификатора (т.е. Есть буквы в сегменте), тогда он будет переписываться для polls.

Обновить:

Per arco444, если имя пользователя - это число, это не сработает. Это более конкретное решение:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^getpoll/([0-9-]+)/?$ getpoll.php?poll=$1 [NC,L]
RewriteRule ^polls/([A-Za-z0-9-]+)/?$ polls.php?username=$1 [NC,L]
  • 0
    Это будет работать до тех пор, пока имя пользователя не является числом ...
  • 0
    Конечно, это основано на том факте, что это никогда не будет иметь место ... Было бы лучше проверить каждый файл, а не проверять ^[A-Za-z0-9-] .
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню