使用带 php 的 .htaccess 重写 url 不使用连字符“-”
Rewrite url not working with hyphen "-" using .htaccess with php
我正在尝试使用 .htaccess 重写使我的url用户友好。
来自 url - http:///localhost/Web/new_products.php?cat_id=1&cat_title=new-rocket
到url-http://localhost/Web/new-rocket-1.php
在我的 new_products.php
$get_cat = "select * from new_products_cat";
$run_cat = mysqli_query($con, $get_cat);
while($row_cat = mysqli_fetch_array($run_cat)){
$cat_id = $row_cat['cat_id'];
$cat_title = $row_cat['cat_title'];
$hyphen_cat_title = str_replace(' ', '-', $cat_title);
echo "
<a href='new_products.php?cat_id=$cat_id&cat_title=$hyphen_cat_title'>
......
......
......
在我的 .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} /Web/new_products.php\?cat_id=([^&\s]+)&cat_title=([^&\s]+) [NC]
RewriteRule ^ /Web/%2-%1\.php? [NC,R,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-]+)-([^.]+)\.php$ /Web/new_products.php?cat_id=&cat_title= [QSA,L,NC]
</IfModule>
问题 1
我的代码只有在我使用“下划线”时才有效。 $连字符_cat_title = str_replace(' ', '_', $cat_title);
但如果我使用“连字符”则无法正常工作,它会继续重定向到 http://localhost/Web/new_products。php
问题二
我可以在 .htaccess 中使用重写将“space”替换为“连字符”吗?不使用 php str_replace
对于我的问题 1
问题是[^-]“除了连字符之外的每个字符”。感谢@CBroe
下面的代码解决了我的问题。
RewriteRule ^([^.]+)-([^.]+)\.php$ /Web/new_products.php?cat_id=&cat_title= [QSA,L,NC]
我正在尝试使用 .htaccess 重写使我的url用户友好。
来自 url - http:///localhost/Web/new_products.php?cat_id=1&cat_title=new-rocket
到url-http://localhost/Web/new-rocket-1.php
在我的 new_products.php
$get_cat = "select * from new_products_cat";
$run_cat = mysqli_query($con, $get_cat);
while($row_cat = mysqli_fetch_array($run_cat)){
$cat_id = $row_cat['cat_id'];
$cat_title = $row_cat['cat_title'];
$hyphen_cat_title = str_replace(' ', '-', $cat_title);
echo "
<a href='new_products.php?cat_id=$cat_id&cat_title=$hyphen_cat_title'>
......
......
......
在我的 .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} /Web/new_products.php\?cat_id=([^&\s]+)&cat_title=([^&\s]+) [NC]
RewriteRule ^ /Web/%2-%1\.php? [NC,R,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-]+)-([^.]+)\.php$ /Web/new_products.php?cat_id=&cat_title= [QSA,L,NC]
</IfModule>
问题 1
我的代码只有在我使用“下划线”时才有效。 $连字符_cat_title = str_replace(' ', '_', $cat_title);
但如果我使用“连字符”则无法正常工作,它会继续重定向到 http://localhost/Web/new_products。php
问题二
我可以在 .htaccess 中使用重写将“space”替换为“连字符”吗?不使用 php str_replace
对于我的问题 1
问题是[^-]“除了连字符之外的每个字符”。感谢@CBroe
下面的代码解决了我的问题。
RewriteRule ^([^.]+)-([^.]+)\.php$ /Web/new_products.php?cat_id=&cat_title= [QSA,L,NC]