如何将非 php 扩展名 url 重定向到 php 扩展名 url htaccess?
how to redirect non php extension url to php extension url htaccess?
我已经通过 functions.php.
为我在 wordpress 中的所有页面添加了 .php 扩展名
我的代码-
<?php
// Do NOT include the opening PHP tag
// Add .PHP to page permalinks
add_action('init', 'ss_php_pages', -1);
function ss_php_pages() {
global $wp_rewrite;
if ( !strpos($wp_rewrite->get_page_permastruct(), '.php')){
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.php';
}
$wp_rewrite->flush_rules();
}
// Remove slash from page permalinks
add_filter('user_trailingslashit', 'no_page_slash_on_ss',66,2);
function no_page_slash_on_ss($string, $type){
global $wp_rewrite;
if ($wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes==true && $type == 'page'){
return untrailingslashit($string);
}else{
return $string;
}
}
现在我想将旧的 link (example.com/demo) 重定向到新的 link (example .com/demo.php)..
我那里有很多页面,所以我无法手动为每个页面添加重定向。
附加信息:
我在我的 Wordpress 页面中添加了 .php 扩展名(示例。com/demo + .php)。现在,没有 .php 的旧链接(example.demo 或示例。com/anything)得到 404,因为我向它们添加了 .php,因此它们已经修改。现在我想将我所有旧的 link 重定向到 example.com/demo 到 example.com/demo.php 或 example.com/xyz 到 example.com/xyz.php 以免丢失流量或损坏 link.
您可以使用 WordPress htaccess 中的 RewriteRule 指令将 non-php
页面重定向到 php
。
在您的 htaccess 文件的顶部,放置以下规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ /.php [L,R=301]
能否请您尝试遵循 htaccess 规则。确保 htaccess 存在于根文件夹中。
确保在测试 URL 之前清除浏览器缓存。
RewriteEngine on
##User is using wordpress without this rule it was adding .php to home page too which was NOT needed, hence this rule is been added.
RewriteRule ^/?$ / [R=301,END]
##Major rules for links which are non php and should be served with php format files.
RewriteCond %{DOCUMENT_ROOT}/.php -f [NC]
RewriteCond %{REQUEST_URI} !\.php/?$ [NC]
RewriteRule ^(.*)/?$ .php [L,R=301]
对于JS/CSS重写:您可能需要使用base标签来固定您的js和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html 那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用 base 标记。在您网页的 header 中添加此 <base href="/">
以便您的相关链接可以从正确的位置加载。
我已经通过 functions.php.
为我在 wordpress 中的所有页面添加了 .php 扩展名我的代码-
<?php
// Do NOT include the opening PHP tag
// Add .PHP to page permalinks
add_action('init', 'ss_php_pages', -1);
function ss_php_pages() {
global $wp_rewrite;
if ( !strpos($wp_rewrite->get_page_permastruct(), '.php')){
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.php';
}
$wp_rewrite->flush_rules();
}
// Remove slash from page permalinks
add_filter('user_trailingslashit', 'no_page_slash_on_ss',66,2);
function no_page_slash_on_ss($string, $type){
global $wp_rewrite;
if ($wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes==true && $type == 'page'){
return untrailingslashit($string);
}else{
return $string;
}
}
现在我想将旧的 link (example.com/demo) 重定向到新的 link (example .com/demo.php).. 我那里有很多页面,所以我无法手动为每个页面添加重定向。
附加信息: 我在我的 Wordpress 页面中添加了 .php 扩展名(示例。com/demo + .php)。现在,没有 .php 的旧链接(example.demo 或示例。com/anything)得到 404,因为我向它们添加了 .php,因此它们已经修改。现在我想将我所有旧的 link 重定向到 example.com/demo 到 example.com/demo.php 或 example.com/xyz 到 example.com/xyz.php 以免丢失流量或损坏 link.
您可以使用 WordPress htaccess 中的 RewriteRule 指令将 non-php
页面重定向到 php
。
在您的 htaccess 文件的顶部,放置以下规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ /.php [L,R=301]
能否请您尝试遵循 htaccess 规则。确保 htaccess 存在于根文件夹中。
确保在测试 URL 之前清除浏览器缓存。
RewriteEngine on
##User is using wordpress without this rule it was adding .php to home page too which was NOT needed, hence this rule is been added.
RewriteRule ^/?$ / [R=301,END]
##Major rules for links which are non php and should be served with php format files.
RewriteCond %{DOCUMENT_ROOT}/.php -f [NC]
RewriteCond %{REQUEST_URI} !\.php/?$ [NC]
RewriteRule ^(.*)/?$ .php [L,R=301]
对于JS/CSS重写:您可能需要使用base标签来固定您的js和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html 那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用 base 标记。在您网页的 header 中添加此 <base href="/">
以便您的相关链接可以从正确的位置加载。