多个.php页面的变量重写


Variable Rewrite for multiple .php pages

我试图访问我的两个页面,并用.htaccess.重写它们的URL

我试图访问的第一页:

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,但第二个页面没有读取poll值,我认为重定向到polls.php.

有人能解释一下我做错了什么吗?

提前感谢

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]

在这里,我已经交换了您的两个规则,所以我们首先检查ID(对于getpoll,请注意我是如何从表达式中删除字母的)。如果我们不进行ID检查(即段中有字母),那么它将重写为polls

更新:

根据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]