URL重写不能与WordPress一起使用

时间:2017-04-30 16:08:26

标签: wordpress .htaccess mod-rewrite url-rewriting

我想将我网站中一个文件夹(cartoon)中的网址更改为友好的SEO网址。 此文件夹(cartoon)包含与WordPress无关的PHP脚本。

来自:

example.com/cartoon/index.php?v=TitleEpisode

要:

example.com/cartoon/TitleEpisode

我在这里阅读了所有相关问题,但我没有受益。

我的主域名example.com)上有WordPress。

我在.htaccess文件中找到了这段代码:

DirectoryIndex index.html index.php index.htm parking-page.html

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

我该怎么办?

3 个答案:

答案 0 :(得分:1)

好的,基于编辑,似乎你想要的是WordPress不要重写那个slug而是忽略它。

您可以通过修改.htaccess来排除文件夹来执行此操作。确保该文件夹位于您网站的根目录中,例如与wp-adminwp-contentwp-includes相同的文件夹。

然后,打开.htaccess并添加重写规则以忽略该文件夹:

DirectoryIndex index.html index.php index.htm parking-page.html

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# Add this condition with the folder you want to ignore (cartoon in your example)
RewriteCond %{REQUEST_URI} !^/(cartoon|cartoon/.*)$

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

OLD ANSWER

嗯,这是相当开放的。要获得更好的答案,请编辑问题以包含您已尝试过的内容。另外,“一个文件夹”是什么意思?这是自定义帖子类型吗?它是一个类别还是自定义分类?不同类型/分类法有不同的固定链接吗?请提供您想要做的更多细节。

但是对于通常情况,这里是pretty permalinks的文档。

首先,确保在Apache中启用URL Rewriting。 Ubuntu / Debian中的示例

sudo a2enmod rewrite
sudo service apache2 restart

现在,在wp-admin中,转到设置 - &gt;固定链接。将固定链接设置为Post Name

enter image description here

然后点击保存更改。如果您的网站具有权限,它会自动保存新的.htaccess,或者它会为您提供要复制和粘贴的新内容.htaccess

现在您应该能够查看帖子或页面,它应该显示SEO友好链接。

答案 1 :(得分:0)

您如何实施(或打算实施)example.com/cartoon/TitleEpisode的路由?

如果这完全在WordPress之外,那么我希望你在.htaccess子目录中有一个额外的/cartoon文件(因为这可能是一个物理子目录)?仅此一项就足以覆盖父.htaccess文件中的WordPress mod_rewrite指令,因为默认情况下不会继承mod_rewrite指令。

例如,只需在子目录中启用RewriteEngine即可覆盖WP指令。

/cartoon/.htaccess

RewriteEngine On

然后,为了将/cartoon/TitleEpisode形式的网址路由到/cartoon/index.php?v=TitleEpisode,您需要以下内容:

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([^/]+) index.php?v=$1 [L]

(有点类似于父.htaccess文件中的WP指令。)

我会避免在父# BEGIN文件中的# END WordPress.htaccess标记之间进行编辑,因为未来的WP更新可能会覆盖这些标记。

您将在 WP指令之前实现异常。例如:

RewriteRule ^cartoon - [L]

但是,如上所述,您可能最好在子目录中创建一个额外的.htaccess文件,并且完全避免触及WordPress安装。

答案 2 :(得分:0)

它已经完成了。 我在.htaccess

的第一行之后输入
# BEGIN for Cartoon Folder
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?cartoon/(.+)$ /cartoon/?v=$1 [L,QSA]

# END for Cartoon Folder
非常感谢你