多个 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]
我想实现以下目标:
- A 用户可以访问 "domain.com/contact/",这将向他们显示根目录中文件 "contact.php" 的内容。 (注意 URL 中的尾部斜杠)
- 用户可以访问 "domain.com/random-id/",该请求将被路由到 "router.php?r=random-id"。
- 用户可以访问 "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]
所以我的 .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]
我想实现以下目标:
- A 用户可以访问 "domain.com/contact/",这将向他们显示根目录中文件 "contact.php" 的内容。 (注意 URL 中的尾部斜杠)
- 用户可以访问 "domain.com/random-id/",该请求将被路由到 "router.php?r=random-id"。
- 用户可以访问 "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]