نمایش نتایج 1 تا 5 از 5

نام تاپیک: مشکل خیلی ساده با php

  1. #1

    مشکل خیلی ساده با php

    سلام

    تشکر بابت انجمن واقعا مشکلاتم خیلی زود برطرف شدن


    من از یک سیستم استفاده میکنم که به صورت معمولی به این صورت پست هاش نمایش داده میشه


    www.site.com/56985_نام-پست.html



    این کدهاش در فایل function.php برای معرفی عنوان مطلب به اون شکل هست:


    $str = $C->URL . $type . "/" . $id . "_" . $title . ".html" ;


    من تغییرش دادم و به این صورت کردم :

    $str = $C->URL . $type . "/" . $title . ".html" ;


    پست ها لینکاشون در سایت درست میشه و به این شکل میشن :



    www.site.com/نام-پست.html


    اما به مطلب که میری خطای 404 میده و مطلب رو نمایش نمیده

    ولی اگر مطلب را به صورت این شکلی وارد کنی کار میکنه و مطلب رو میاره


    www.site.com/article197105.html



    کدهای htaccess سایت هم اینه :



    #AddDefaultCharset utf-8
    #php_flag display_errors 0
    #php_flag magic_quotes_gpc Off

    Options +FollowSymlinks
    RewriteEngine On
    DirectoryIndex index.php index.html

    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*) http://%1/$1 [L,R=302]

    RewriteRule ^tags/(.+)/page/([0-9]+)/?$ index.php?act=search&tag=$1&page=$2 [QSA,NC,L]
    RewriteRule ^tags/(.+)/?\.html$ index.php?act=search&tag=$1 [QSA,NC,L]
    RewriteRule ^tags/(.+)/?$ index.php?act=search&tag=$1 [QSA,NC,L]

    RewriteRule ^rss/([0-9]+)/(.+)/(.+)/?(\.xml)?$ rss.php?cat=$1 [QSA,NC,L]
    RewriteRule ^rss/([0-9]+)/?(.+)?/?(\.xml)?$ rss.php?id=$1 [QSA,NC,L]
    RewriteRule ^sitemap.xml/?$ sitemap.php [QSA,NC,L]
    RewriteRule ^sitemap2.xml/?$ sitemap2.php [QSA,NC,L]

    RewriteRule ^(.+)/([0-9]+)/(.+)/?\.html$ /$1/article$2.html [L,R=301]
    RewriteRule ^([0-9]+)/(.+)/?\.html$ /post/article$1.html [L,R=301]
    RewriteRule ^(.+)/([0-9]+)_(.+)/?$ /$1/article$2.html [L,R=301]
    RewriteRule ^(.+)/article(.+)/?\.html$ index.php?act=$1&id=$2 [QSA,NC,L]

    RewriteRule ^cat/([0-9]+)/page/([0-9]+)/?$ index.php?cat=$1&page=$2 [QSA,NC,L]
    RewriteRule ^cat/([0-9]+)/(.+)/?\.php$ index.php?cat=$1 [QSA,NC,L]
    RewriteRule ^subcat/(.+)/page/([0-9]+)/?$ index.php?catname=$1&page=$2 [QSA,NC,L]
    #RewriteRule ^link\.php\?id=([0-9]+)/?$ index.php?id=$1 [QSA,NC,L]

    ## SubCat's
    RewriteRule ^subcat/(.+)/(.+)/page/(.+)/?$ index.php?error=1&subcat=$1&catname=$2&page=$3 [QSA,NC,L]
    RewriteRule ^subcat/(.+)/(.+)/?$ index.php?error=1&subcat=$1&catname=$2 [QSA,NC,L]
    ## SubCat's

    ## Cat's
    RewriteRule ^cat/(.+)/page/(.+)/?$ index.php?error=1&subcat=$1&page=$2 [QSA,NC,L]
    RewriteRule ^cat/(.+)/?$ index.php?error=1&subcat=$1 [QSA,NC,L]
    ## Cat's

    RewriteCond %{REQUEST_FILENAME} "!admin/(.*)"
    RewriteCond %{REQUEST_FILENAME} "!google(.*)"
    RewriteRule ^(.+)/?\.html$ index.php?catname=$1 [QSA,NC,L]
    RewriteRule ^page/(.+).php$ index.php?act=page&page=$1 [QSA,NC,L]

    ## Search ##
    #RewriteRule ^items/(.+)/?\.html$ index.php?act=search&tag=$1 [QSA,NC,L]
    #RewriteRule ^search/(.+)/?\.html$ index.php?act=search&tag=$1 [QSA,NC,L]

    RewriteRule ^(.+)/([0-9]+)/(.+)/?\.html$ index.php?act=$1&id=$2&name=$3 [QSA,NC,L]
    RewriteRule ^(.+)/([0-9]+)/?\.html$ index.php?act=$1&id=$2 [QSA,NC,L]
    RewriteRule ^(.+)/([0-9]+)_(.+)/?$ index.php?id=$2&title=$3 [QSA,NC,L]

    RewriteRule ^([0-9]+)_(.+)/?$ index.php?id=$1&title=$2 [QSA,NC,L]
    #RewriteRule ^([0-9]+)_(.+)/?$ index.php?tag=$2 [QSA,NC,L]

    RewriteRule ^(.+)/(.+)/page/([0-9]+)/?$ index.php?$1=$2&page=$3 [QSA,NC,L]
    RewriteRule ^(.+)?/?page/([0-9]+)/?$ index.php?act=$1&page=$2 [QSA,NC,L]

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
    RewriteRule \.(gif|jpe?g|png|bmp) /userfiles/nopic.jpg [NC,L]

    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
    RewriteRule ^(.+) index.php?error=404 [NC,L]

    #AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript

    # remove browser bugs
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    Header append Vary User-Agent


    <FilesMatch ".*$">
    ErrorDocument 404 /index.php?error=404
    ErrorDocument 400 /index.php?error=400
    ErrorDocument 500 /index.php?error=500
    </FilesMatch>

    <IfModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file \.(html?|txt|css|js|php|pl|jpg|png|gif)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    </IfModule>

    IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

    AddType application/octet-stream mp3
    AddType application/octet-stream mp4
    AddType application/octet-stream 3gp
    AddType application/octet-stream mpg
    AddType application/octet-stream mpeg

    <FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Cache-Control "max-age=864000, public"
    </FilesMatch>

    <FilesMatch ".(xml|txt)$">
    Header set Cache-Control "max-age=3600, public, must-revalidate"
    </FilesMatch>

    <Limit PUT DELETE>
    order deny,allow
    deny from all
    </Limit>
    <LimitExcept POST GET>
    </LimitExcept>






    کد کامل قسمت فانکشن هم اینه :




    function make_seo($type,$id,$title) {
    global $C ;
    if ( $C->POST_SEO == 0 ) return 'http://' . $type . '.' . $C->DOMAIN . '/' . $type . '/article' . $id . '.html' ;
    if ( $C->POST_SEO == 0 ) return $C->URL . $type . '/article' . $id . '.html' ;
    $title = mb_ereg_replace('[^A-Za-z0-9آ-ی \_\-]+',' ',$title);
    $words = explode(' ',$title);
    if ( count($words) > 15 ) {
    $title = implode(' ',array_splice($words,0,15));
    }
    $title = str_replace('_','-',$title); $title = url_encode($title);
    $str = $C->URL . $type . '/' . $id . '_' . $title ;
    return $str ;
    }
    function makeseo($type,$id,$title) {
    global $C ;
    if ( $C->POST_SEO == 0 ) return $C->URL . $type . '/article' . $id . '.html' ;
    if ( strlen($title) > 120 ) $title = substr($title,0,120) ;
    $title = mb_ereg_replace('[^A-Za-z0-9آ-ی \_\-]+',' ',$title);
    $title = str_replace("_","-",$title); $title = url_encode($title);
    $str = $C->URL . $type . "/" . $id . "/" . $title . ".html" ;
    //$str = $C->URL . $id . '_' . $title ; //. '.html'
    return $str ;
    }






    میدونم مشکل سادست ولی هر کاری میکنم درست نمیشه

    ممنون میشم راهنمائی کنید

  2. #2

    نقل قول: مشکل خیلی ساده با php

    سلام
    سایت شما بر اساس id مطلب مورد نظر را پیدا میکنه، در فایل htaccses خط 21 تا 24 شماره id که در ابتدای آدرس وجود داره رو میخونه و پست مورد نظر را نمایش میده، وقتی شما در آدرس سایت id را حذف می کنید htaccess متن را به جای id برای فراخونی میفرسته و چون مطلبی با این مشخصات پیدا نمیکنه ارور 404 میده

  3. #3

    نقل قول: مشکل خیلی ساده با php

    نقل قول نوشته شده توسط bcloob مشاهده تاپیک
    سلام
    سایت شما بر اساس id مطلب مورد نظر را پیدا میکنه، در فایل htaccses خط 21 تا 24 شماره id که در ابتدای آدرس وجود داره رو میخونه و پست مورد نظر را نمایش میده، وقتی شما در آدرس سایت id را حذف می کنید htaccess متن را به جای id برای فراخونی میفرسته و چون مطلبی با این مشخصات پیدا نمیکنه ارور 404 میده
    تشکر

    میشه بگید چاره چیه برای حذف کردن اون آیدی ؟

  4. #4

    نقل قول: مشکل خیلی ساده با php

    ببخشید من الان تستکردم به جای article$2.html میزارم tilte بازم کار نمیکنه

  5. #5

    نقل قول: مشکل خیلی ساده با php

    حذف id منطقی نیست چون ممکنه دو مطلب title یکسان داشته باشن (Unique نیست) ولی اگه فیلد title رو Unique کرده باشین، اونوقت تغییرات زیر توی خطوط 21 تا 25 فایل htaccess. لازمه:
    RewriteRule ^(.+)/([0-9]+)/(.+)/?\.html$ /$1/article$3.html [L,R=301]
    RewriteRule ^([0-9]+)/(.+)/?\.html$ /post/article$2.html [L,R=301]
    RewriteRule ^(.+)/([0-9]+)_(.+)/?$ /$1/article$3.html [L,R=301]
    RewriteRule ^(.+)/article(.+)/?\.html$ index.php?act=$1&id=$2 [QSA,NC,L]

    بعد از این تغییرات، باید کدتون رو اصلاح کنید و توی index.php (و فایلهای احتمالی که برای نمایش/ویرایش/حذف مطالب include میشه) باید بگردین هرجا مطلب براساس فیلد id توی دیتابیس جستجو میشه، تغییرش بدین و براساس title جستجو کنید. البته Escapeکردن ورودیهای کاربر رو هم فراموش نکنید.

تاپیک های مشابه

  1. خواهشا کمک کنید مشکل خیلی مهم در php دارم
    نوشته شده توسط websin در بخش PHP
    پاسخ: 12
    آخرین پست: چهارشنبه 18 دی 1392, 19:27 عصر
  2. یه مشکل خیلی ساده... درباره لینک
    نوشته شده توسط pcb20parse در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: شنبه 23 آذر 1392, 13:21 عصر
  3. شطرنج خیلی ساده با php
    نوشته شده توسط doodkani1134 در بخش PHP
    پاسخ: 4
    آخرین پست: سه شنبه 05 آذر 1392, 20:44 عصر
  4. سوال: نوشتن برنامه ی خیلی ساده با php
    نوشته شده توسط arlvl4n.z3r0 در بخش PHP
    پاسخ: 3
    آخرین پست: پنج شنبه 19 اردیبهشت 1392, 23:49 عصر
  5. نوشتن اعداد در 7 ستون یه مشکل خیلی ساده در C
    نوشته شده توسط St4r-S4t در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 4
    آخرین پست: چهارشنبه 20 آبان 1388, 17:12 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •