如何从此网址中删除 id 和 title? [复制]

Posted

技术标签:

【中文标题】如何从此网址中删除 id 和 title? [复制]【英文标题】:How to remove id and title from this url? [duplicate] 【发布时间】:2015-06-28 04:40:08 【问题描述】:

我需要使用 .htaccess 文件从此网址中删除 ?id=&title=

现在的网址 - http://www.XXXX.com/video.php?id=XX&title=XXX-XXX-XXX

我需要什么 - http://www.XXXX.com/video.php/XX/XXX-XXX-XXX

我已经从所有链接中删除了 .php。

【问题讨论】:

你尝试了什么? 使用 post 方法,认为你正在尝试使用 get RewriteRule ^video/([0-9]+)/([0-9a-zA-Z_-]+)$ video.php?id=$1&title=$2 [NC,L] 这不起作用.. 【参考方案1】:

以下 htaccess 代码将完成您的工作

    //First Parameer
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)$ video.php?id=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ video.php?id=$1

    //Second Parameter
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ video.php?id=$1&title=$2
    RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ video.php?id=$1&title=$2

【讨论】:

是的,这比我的版本要好得多。不错。 我不明白为什么这应该有效。 OP想要删除查询字符串。【参考方案2】:

将以下代码添加到您的 .htaccess 文件中。

RewriteEngine on
RewriteBase / 
RewriteCond %QUERY_STRING ^id=(.*)\&title=(.*)
RewriteRule (.*) /$1/%1/%2?  [NC,L,R=301]

输出是

http://www.XXXX.com/video.php/XX/XXX-XXX-XXX

这段代码对我有用,我希望它对你有用。

【讨论】:

您的规则将匹配任何带有 id 和 title 参数的 url,而不仅仅是 /video.php @MarioA 嘿,我现在编辑我的代码,它不仅可以处理任何文件 video.php,谢谢【参考方案3】:

为了访问查询字符串,您需要使用这样的RewriteCond 语句:

RewriteEngine on
RewriteCond %QUERY_STRING id=([^&]+)&title=([^&]+)
RewriteRule ^video.php$ video.php/%1/%2 [L,R=301]

当 id 和 title 参数与您的示例完全一致时,上述示例有效。如果查询字符串中可以有其他参数,或者参数可以按任意顺序排列,则需要调整规则。

【讨论】:

为什么要这样? RewriteRule ^video.php$matches 只是 /video.php 没有别的。 嘿伙计们,对不起,这是我的错误。感谢您指出这一点。【参考方案4】:

非常感谢您提供所有这些答案。Subodh Ghulaxe 已发布了一个很好的答案。

但这对我来说是有效的代码。

# To externally redirect /dir/foo.php?id=123&title=456 to /dir/123/456
RewriteCond %THE_REQUEST ^GET\s([^.]+)\.php\?id=([^&]+)&title=([^&\s]+) [NC]
RewriteRule ^ %1/%2/%3? [R,L]

# To externally redirect /dir/foo.php?id=123 to /dir/123
RewriteCond %THE_REQUEST ^GET\s([^.]+)\.php\?id=([^&\s]+)\s [NC]
RewriteRule ^ %1/%2? [R,L]

# To internally forward /dir/foo/12 to /dir/foo.php?id=12
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.php -f
RewriteRule ^(.+?)/([^/]+)(/[^/]+)?/?$ $1.php?id=$2 [L,QSA]

RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ video.php?id=$1&title=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ video.php?id=$1&title=$2

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %THE_REQUEST ^GET\s([^.]+)\.php\s [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.php -f
RewriteCond %QUERY_STRING ^$
RewriteRule ^(.*?)/?$ $1.php [L]

Sumurai8 在here 中完成了这段代码(完整的.htaccess 代码)。我希望这段代码对某人有所帮助。对于 css、js、图像,请确保使用绝对路径。

【讨论】:

以上是关于如何从此网址中删除 id 和 title? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬 |如何从此猫鼬模式中删除重复错误[重复]

如何从此列表中检索列数据

如何从 url 中删除 id 和 title 并用域后跟标题名称重写它?

如何从页面中删除 iframe 的填充

无法从此设备 XCode 4.6.3 复制符号

如何使用PHP从此代码中的锚标记中提取id和url?