多个 .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 ^(.*)$ / [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= [NC,L]
  RewriteRule ^[A-Za-z0-9-]+/([A-Za-z0-9-]+)/?$ getpoll.php?poll= [NC,L]

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

# End of Apache Rewrite Rules


 </IfModule>

第一页作为 /polls/username 但第二页不读取轮询值,我认为重定向到 polls.php。

谁能解释一下我做错了什么?

提前致谢

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

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

更新:

根据 arco444,如果用户名是数字,这将不起作用。这是一个更具体的解决方案:

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