htaccess - 需要帮助编写正确的规则

时间:2015-05-15 16:51:48

标签: php .htaccess

我正在使用SimpleMVCFramework

我的所有路由都运行正常,基于默认的htaccess文件:

Options -Indexes

<IfModule mod_rewrite.c>

    Options -Indexes

    RewriteEngine On
    RewriteBase /mpl/servicos/smvcf/

    # Force to exclude the trailing slash
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.*)/$
    RewriteRule ^(.+)/$ $1 [R=307,L]

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?$1 [QSA,L]

</IfModule>

我有一个期望id的路线: http://localhost/mpl/servicos/smvcf/detalhe/37343

但我需要用户认为友好的网址: http://localhost/mpl/servicos/smvcf/mercedes_benz-a-a_220_cdi_auto-37343.html

我认为这样的事情会奏效,但我得到了404:

RewriteRule ([^/]+)-([^/]+)-([^/]+)-([^/]+).html detalhe/$4

请帮忙。

2 个答案:

答案 0 :(得分:0)

用户看到漂亮的网址,但您对seo-title的内容不感兴趣。您感兴趣的是隐藏在其中的数字。由于数字位于漂亮网址的后面,所以我们只能匹配:

RewriteRule ^[^/]+-([0-9]+)\.html detalhe/$1 [L]

答案 1 :(得分:0)

如果您尝试使用另一个不会通过默认MVC路由index.php路由的重写,那么您需要确保在这些规则之前放置新的重写。您重定向到的文件夹也需要有一个索引PHP文件来执行某些操作。

subprocess.call