【发布时间】:2021-02-26 07:04:06
【问题描述】:
我正在使用这个URL rewriting with PHP 文件夹结构来重写 URL。我完成了它工作正常,但是在重写 URL 之后,好的,现在我有两个 URL,一个是简单的 URL,如 /~admin/product-category.php?cat_id=2,第二个重写 URL /~admin/product-category/men-items 那么如何将第一个 URL 重定向到第二个 URL?或者只是第一个 URL 不应该因为重复的内容问题。
我的项目链接:
第一个链接:http://199.192.21.232/~admin/product-category.php?cat_id=2 重写链接:http://199.192.21.232/~admin/product-category/men-items
脚本
define( 'INCLUDE_DIR', dirname( __FILE__ ) . '/' );
$rules = array(
'picture' => "/picture/(?'text'[^/]+)/(?'id'\d+)", // '/picture/some-text/51'
'album' => "/album/(?'album'[\w\-]+)", // '/album/album-slug'
'category' => "/product-category/(?'product_category'[\w\-]+)", // '/category/category-slug'
'page' => "/page/(?'page'about|contact)", // '/page/about', '/page/contact'
'post' => "/(?'post'[\w\-]+)", // '/post-slug'
'home' => "/" // '/'
);
$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );
$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );
$uri = urldecode( $uri );
foreach ( $rules as $action => $rule ) {
if ( preg_match( '~^'.$rule.'$~i', $uri, $params ) ) {
include( INCLUDE_DIR . $action . '.php' );
exit();
}
}
include( INCLUDE_DIR . '404.php' );
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
【问题讨论】:
-
这里的
category.php是什么?一些现有的 PHP 文件?你想把这段代码放在哪里?您了解您尝试使用的代码吗? -
yes ``` category.php 是现有的 PHP 文件。我正在使用它来重写页面,您可以在此处查看用于重写 URL 的文件夹结构stackoverflow.com/questions/16388959/url-rewriting-with-php
-
我看到了 SO 线程,您的问题中有指向它的链接。你想把这段代码放在哪里?您了解该代码应该如何工作吗?您是否了解重写的 URI 将由
index.php处理,而不是category.php拥有.htaccess?category.php的目的到底是什么?为什么最初不正确生成所有链接? -
是的,我明白我只是更新我的问题,请检查提供的链接。这段代码,一切正常。我只想删除或重定向第一个链接到重写链接。因为它正在创建重复的内容问题谷歌将索引两个 URL 我只想要一个 URL,如 199.192.21.232/~admin/product-category/men-items
-
据我了解,
/~admin/product-category.php?cat_id=2URI 使用/~admin/product-category.phpPHP 脚本提供服务,重写后的/~admin/product-category/men-itemsURI 也应该使用相同的 PHP 脚本提供服务。有了.htaccess,重写的链接将与您的index.php一起提供,而不是product-category.php。
标签: php redirect url-rewriting