从 url 的中间获取变量并将其附加到最后
take variable from middle of url and append it to the very end
我有这样的链接
http://panel.domain.com/users/index.php?user=8
http://panel.domain.com/users/settings/index.php?user=8
我想把它们重写成这样:
http://panel.domain.com/users/8/
http://panel.domain.com/users/8/settings
我希望它在用户 ID 之后获取任何内容并将其放在用户之后,然后转到该页面的 index.php 并将用户 ID 放在末尾,如下所示:users/USERID/chain/of/directories/index.php?user=USERID
我可以用这个进行第一次重写:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?user=
我试过这样做
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^users/(.*)/$ /index.php?user=
$2 是第一个,因为它应该是 users/ID/
之后的所有内容,然后 $1 应该是 /ID/
,它被放置在目录链的末尾:users/ID/settings/index.php?user=ID
但我真的不知道它是如何工作的。我不知道是什么让 </code> 和 <code>
起作用,而且我不了解正则表达式。我整晚都在浏览 Pearl 文档,只是想把东西拼凑起来,但我就是不明白。
能否请您尝试根据您显示的示例进行跟踪、编写和测试。您可以在一次拍摄中捕捉到这两个变量,您不需要为此使用 2 个条件。
仅将此 .htaccess 文件放在您的用户文件夹中。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
RewriteBase /users/
RewriteRule ^/?$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+)/?$ index.php?users= [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+)/.*$ settings/index.php?users= [L]
您可以在站点根目录中使用此 .htaccess 代码 .htaccess
:
Options -MultiViews
RewriteEngine On
RewriteRule ^users/([\w-]+)(/.+)?/?$ /users/index.php?user= [L,QSA]
假设您在 /users/
目录中没有任何 .htaccess。
我有这样的链接
http://panel.domain.com/users/index.php?user=8
http://panel.domain.com/users/settings/index.php?user=8
我想把它们重写成这样:
http://panel.domain.com/users/8/
http://panel.domain.com/users/8/settings
我希望它在用户 ID 之后获取任何内容并将其放在用户之后,然后转到该页面的 index.php 并将用户 ID 放在末尾,如下所示:users/USERID/chain/of/directories/index.php?user=USERID
我可以用这个进行第一次重写:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?user=
我试过这样做
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^users/(.*)/$ /index.php?user=
$2 是第一个,因为它应该是 users/ID/
之后的所有内容,然后 $1 应该是 /ID/
,它被放置在目录链的末尾:users/ID/settings/index.php?user=ID
但我真的不知道它是如何工作的。我不知道是什么让 </code> 和 <code>
起作用,而且我不了解正则表达式。我整晚都在浏览 Pearl 文档,只是想把东西拼凑起来,但我就是不明白。
能否请您尝试根据您显示的示例进行跟踪、编写和测试。您可以在一次拍摄中捕捉到这两个变量,您不需要为此使用 2 个条件。
仅将此 .htaccess 文件放在您的用户文件夹中。
请确保在测试您的 URL 之前清除您的浏览器缓存。
RewriteEngine ON
RewriteBase /users/
RewriteRule ^/?$ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+)/?$ index.php?users= [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+)/.*$ settings/index.php?users= [L]
您可以在站点根目录中使用此 .htaccess 代码 .htaccess
:
Options -MultiViews
RewriteEngine On
RewriteRule ^users/([\w-]+)(/.+)?/?$ /users/index.php?user= [L,QSA]
假设您在 /users/
目录中没有任何 .htaccess。