我需要能够缩短我的页面:
mydomain.com/mixtape.php?mixid=(WHATEVER NUMBER)
Run Code Online (Sandbox Code Playgroud)
至:
mydomain.com/m/(WHATEVER NUMBER)
Run Code Online (Sandbox Code Playgroud)
现在通常这对我来说并不是一个问题,但由于我的.htaccess文件中存在一些预先存在的函数,因此该函数很难不与其他函数进行不正确的交互.
下面是我的.htaccess文件的当前代码(没有它可以改变)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ profile.php?user=$1 [L]
Run Code Online (Sandbox Code Playgroud)
上面,.htaccess文件正在缩短我的
mydomain.com/profile.php?username=(USERNAME)
Run Code Online (Sandbox Code Playgroud)
至
mydomain.com/(USERNAME)
Run Code Online (Sandbox Code Playgroud)
有没有人可以通过缩短m/index.php?mixid来帮助我,而不是让它与预先存在的函数冲突?
Lix*_*Lix 12
将此规则添加到.htaccess块重写配置文件URL(在打开重写引擎后):
RewriteCond $1 ^m/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ mix.php?id=$1 [L]
Run Code Online (Sandbox Code Playgroud)
该规则现在仅用于URLS,如:
mydomain.com/m/(WHATEVER NUMBER)
m/
mixtape.php
作为调用的GET参数传递给文件id
.此行还包含一个[L]
标志,指出当前传入的URL不会再出现规则或重写.在mix.php文件中,您可以使用explode方法将结果字符串拆分为数组:
http://example.com/m/foo/bar
=>
` http://example.com/mixtape.php?id=/m/foo/bar
$splitArr = explode('/',$_GET['id']);
Run Code Online (Sandbox Code Playgroud)
$splitArr =>
array (
0 => 'm',
1 => 'foo',
1 => 'bar',
)
Run Code Online (Sandbox Code Playgroud)
和删除初始m
用
array_shift();
Run Code Online (Sandbox Code Playgroud)
然后,您将保留$splitArr
包含URL的所有部分,并使用/
(斜杠)分隔符进行拆分.
URL example.com/m/foo/bar
看起来像:
array (
0 => 'foo',
1 => 'bar',
)
Run Code Online (Sandbox Code Playgroud)
将此规则放在现有规则之前非常重要,因为现有规则将对任何传入的URL起作用.您拥有的最后两条规则应如下所示:
RewriteEngine on
RewriteCond $1 ^m/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ mix.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ profile.php?user=$1 [L]
Run Code Online (Sandbox Code Playgroud)
关于你的陈述:
没有它可以改变
我会认真地建议您考虑对第一条规则进行一些小改动.制作最终的网址mydomain.com/users/(USERNAME)
(就像他们在这里一样).在这些情况下,更具体而不是过于笼统(如现行规则).如果有人要选择用户名,您是否考虑过可能产生的混淆:
虽然完全有效的用户名这些用户配置文件将是:
这些用户名将阻止您可能希望为网站上的其他位置保存的重要网址.我认为很明显为什么这些用户名是不受欢迎的.