使用PHP的动态阿拉伯语类别URL的SEO友好URL

时间:2010-10-17 05:59:22

标签: php .htaccess mod-rewrite seo

目前我有这样的网址

域/的index.php?猫=مال_وأعمال

我想进行设置,以便我们的营销人员可以发布网址

domain /مال_وأعمال

我尝试了几种解决方案,包括:

mod_rewrite - 这种方法的问题在于它变成了一个巨大的.htaccess文件,因为我们需要为每个类别编写规则。

RewriteMap - 由于我可以查询数据库以构建输出的地图文件,因此非常接近。但是,我已经知道我们无法访问httpd.conf。

index.php - 我已经尝试通过我们的index.php文件运行所有内容,但是不能保证浏览器中的URL对SEO有用。

我希望有人有另一个可能有所帮助的想法,我真的很感激。如果您在网络上引用了一些有助于实现这一目标的内容。

php .htaccess mod-rewrite seo-friendly

3 个答案:

答案 0 :(得分:1)

您可以使用以下规则将URI路径仅包含单个路径段的每个请求映射到 index.php ,同时排除现有文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]+$ index.php?cat=$0 [L]

请注意,您实际上必须请求/مال_وأعمال将其内部重写为/index.php?cat=مال_وأعمال

答案 1 :(得分:0)

首先,您需要创建一个catch all all子域,它将所有请求发送到您的单个VirtualHost:

ServerAlias *.website.com

然后你可以:

  1. 在应用程序级别检查HTTP主机并执行任何需要执行的操作(从虚拟子域提供内容,或者执行301重定向到www。
  2. 使用单个mod_rewrite规则重写您最初建议的URL。

答案 2 :(得分:0)

您仍然可以使用mod_rewrite解决方案。诀窍是[L]参数,意味着在该行之后停止mod_rewriting。假设您有三个页面“index.php”,“about_us.php”和“contact_us.php”,然后是任何他们键入的其他内容,您想要重定向到一个类别。您可以执行以下操作:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule index\.php index.php [L]
RewriteRule about_us(\.php)? about_us.php [L]
RewriteRule contact_us(\.php)? contact_us.php [L]
RewriteRule (.*) index.php?cat=$1
</IfModule>

这样,如果他们转到index.php(或只是index),他们会获得index.php文件。如果他们转到about_us.php(或只是about_us),他们会获得您的about_us.php文件。但如果他们转到test(前三行中没有指定),他们会被重定向到index.php?cat=test