多个 RewriteRules 和 RewriteConds 干扰

Multiple RewriteRules & RewriteConds interfering

所以我的 .htaccess 中有以下代码:

RewriteEngine On

# Remove .php from URL and add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ .php
RewriteRule ^([^/]+)/([^/]+)/$ //.php
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ // [R=301]

# Rewriting data from URL
RewriteRule ^minecraft/(.*)/$ /minecraft// [NC,L]
RewriteRule ^game/(.*)/$ /game// [NC,L]
RewriteRule ^tool/(.*)/$ /tool// [NC,L]

# Redirection if file or folder doesn't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)$ ./router.php?r=/ [QSA,R,L]

我想实现以下目标:

  1. A 用户可以访问 "domain.com/contact/",这将向他们显示根目录中文件 "contact.php" 的内容。 (注意 URL 中的尾部斜杠)
  2. 用户可以访问 "domain.com/random-id/",该请求将被路由到 "router.php?r=random-id"。
  3. 用户可以访问 "domain.com/minecraft/random-name/",该请求将被路由到 "minecraft/random-name/" 文件夹。 (里面有 index.php 等)

我似乎无法弄清楚,感谢任何帮助!

这样说:

DirectoryIndex index.php
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ // [R=301]

# Remove .php from URL and add trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/\.php -f [NC]
RewriteRule ^(.+?)/?$ .php [L]

# Redirection if file or folder doesn't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ router.php?r=/ [QSA,L]